* 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:
dmharrah 2009-07-27 19:14:57 +00:00
parent 26c26a2da0
commit e502847dfb
6 changed files with 58 additions and 8 deletions

View File

@ -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
}

View File

@ -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

View File

@ -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

View File

@ -0,0 +1,2 @@
project.name=Publish Test
project.version=1.0

View File

@ -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
}
}

View File

@ -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]