mirror of https://github.com/sbt/sbt.git
* Add test for publish-local for multi-projects.
* Make `managedStyle` inherit from parent when unspecified * Define method containing package actions to run before deliver,deliver-local git-svn-id: https://simple-build-tool.googlecode.com/svn/trunk@904 d89573ee-9141-11dd-94d4-bdf5e562f29c
This commit is contained in:
parent
26c26a2da0
commit
e502847dfb
|
|
@ -267,7 +267,12 @@ trait BasicManagedProject extends ManagedProject with ReflectiveManagedProject w
|
|||
def defaultConfiguration: Option[Configuration] = Some(Configurations.DefaultConfiguration(useDefaultConfigurations))
|
||||
def useMavenConfigurations = true // TODO: deprecate after going through a minor version series to verify that this works ok
|
||||
def useDefaultConfigurations = useMavenConfigurations
|
||||
def managedStyle: ManagedType = Auto
|
||||
def managedStyle: ManagedType =
|
||||
info.parent match
|
||||
{
|
||||
case Some(m: BasicManagedProject) => m.managedStyle
|
||||
case _ => Auto
|
||||
}
|
||||
protected implicit final val defaultPatterns: RepositoryHelpers.Patterns =
|
||||
{
|
||||
managedStyle match
|
||||
|
|
@ -396,18 +401,20 @@ trait BasicManagedProject extends ManagedProject with ReflectiveManagedProject w
|
|||
def configurations: Option[Iterable[Configuration]] = None
|
||||
}
|
||||
|
||||
def packageToPublishActions: Seq[ManagedTask] = Nil
|
||||
|
||||
private[this] def depMap[T](f: BasicManagedProject => T) =
|
||||
topologicalSort.dropRight(1).flatMap { case m: BasicManagedProject => f(m) :: Nil; case _ => Nil }
|
||||
|
||||
lazy val update = updateAction
|
||||
lazy val makePom = makePomAction
|
||||
lazy val makePom = makePomAction dependsOn(packageToPublishActions : _*)
|
||||
lazy val cleanLib = cleanLibAction
|
||||
lazy val cleanCache = cleanCacheAction
|
||||
// deliver must run after its dependencies' `publish` so that the artifacts produced by the dependencies can be resolved
|
||||
// (deliver requires a resolve first)
|
||||
lazy val deliverLocal: Task = deliverLocalAction dependsOn(depMap(_.publishLocal) : _*)
|
||||
lazy val deliverLocal: Task = deliverLocalAction dependsOn((depMap(_.publishLocal) ++ packageToPublishActions) : _*)
|
||||
lazy val publishLocal: Task = publishLocalAction
|
||||
lazy val deliver: Task = deliverAction dependsOn(depMap(_.publish) : _*)
|
||||
lazy val deliver: Task = deliverAction dependsOn((depMap(_.publish) ++ packageToPublishActions) : _*)
|
||||
lazy val publish: Task = publishAction
|
||||
}
|
||||
|
||||
|
|
|
|||
|
|
@ -248,9 +248,7 @@ abstract class BasicScalaProject extends ScalaProject with BasicDependencyProjec
|
|||
protected def defaultTestTask(testOptions: => Seq[TestOption]) =
|
||||
testTask(testFrameworks, testClasspath, testCompileConditional.analysis, testOptions).dependsOn(testCompile) describedAs TestDescription
|
||||
|
||||
override protected def makePomAction = super.makePomAction dependsOn(`package`)
|
||||
override protected def deliverLocalAction = super.deliverLocalAction dependsOn(`package`)
|
||||
override protected def deliverAction = super.deliverAction dependsOn(`package`)
|
||||
override def packageToPublishActions: Seq[ManagedTask] = `package` :: Nil
|
||||
|
||||
protected def packageAction = packageTask(packagePaths, jarPath, packageOptions).dependsOn(compile) describedAs PackageDescription
|
||||
protected def packageTestAction = packageTask(packageTestPaths, packageTestJar).dependsOn(testCompile) describedAs TestPackageDescription
|
||||
|
|
|
|||
|
|
@ -368,7 +368,7 @@ object ManageDependencies
|
|||
val module = toDefaultModuleDescriptor(md)
|
||||
val parser = new CustomXmlParser.CustomParser(ivy.getSettings)
|
||||
parser.setMd(module)
|
||||
val defaultConf = if(defaultConfiguration.contains("->")) defaultConfiguration else (defaultConfiguration + "->default")
|
||||
val defaultConf = if(defaultConfiguration.contains("->")) defaultConfiguration else (defaultConfiguration + "->default(compile)")
|
||||
parser.setDefaultConf(defaultConf)
|
||||
addDependencies(module, extraDependencies, parser)
|
||||
module
|
||||
|
|
|
|||
|
|
@ -0,0 +1,2 @@
|
|||
project.name=Publish Test
|
||||
project.version=1.0
|
||||
|
|
@ -0,0 +1,23 @@
|
|||
import sbt._
|
||||
|
||||
class MultiPublishTest(info: ProjectInfo) extends ParentProject(info)
|
||||
{
|
||||
override def managedStyle =
|
||||
if(path("mavenStyle").exists)
|
||||
ManagedStyle.Maven
|
||||
else
|
||||
ManagedStyle.Auto
|
||||
def ivyCacheDirectory = outputPath / "ivy-cache"
|
||||
override def updateOptions = CacheDirectory(ivyCacheDirectory) :: super.updateOptions.toList
|
||||
|
||||
lazy val sub = project("sub", "Sub Project", new SubProject(_))
|
||||
class SubProject(info: ProjectInfo) extends DefaultProject(info)
|
||||
{
|
||||
override def managedStyle =
|
||||
if(path("mavenStyle").exists)
|
||||
ManagedStyle.Maven
|
||||
else
|
||||
ManagedStyle.Auto
|
||||
val publishTo = "Scala Tools Nexus" at (outputPath / "test-repo").absolutePath
|
||||
}
|
||||
}
|
||||
|
|
@ -0,0 +1,20 @@
|
|||
> publish-local
|
||||
[success]
|
||||
|
||||
> clean [success]
|
||||
$ touch mavenStyle [success]
|
||||
$ reload [success]
|
||||
> publish-local
|
||||
[success]
|
||||
|
||||
> clean [success]
|
||||
$ touch sub/mavenStyle [success]
|
||||
$ reload [success]
|
||||
> publish-local
|
||||
[success]
|
||||
|
||||
> clean [success]
|
||||
$ delete mavenStyle [success]
|
||||
$ reload [success]
|
||||
> publish-local
|
||||
[success]
|
||||
Loading…
Reference in New Issue