diff --git a/src/main/scala/sbt/BasicProjectTypes.scala b/src/main/scala/sbt/BasicProjectTypes.scala index 2669b1664..038a9215e 100644 --- a/src/main/scala/sbt/BasicProjectTypes.scala +++ b/src/main/scala/sbt/BasicProjectTypes.scala @@ -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 } diff --git a/src/main/scala/sbt/DefaultProject.scala b/src/main/scala/sbt/DefaultProject.scala index b08419246..310b51bf7 100644 --- a/src/main/scala/sbt/DefaultProject.scala +++ b/src/main/scala/sbt/DefaultProject.scala @@ -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 diff --git a/src/main/scala/sbt/ManageDependencies.scala b/src/main/scala/sbt/ManageDependencies.scala index 76f293543..a0703dc4b 100644 --- a/src/main/scala/sbt/ManageDependencies.scala +++ b/src/main/scala/sbt/ManageDependencies.scala @@ -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 diff --git a/src/sbt-test/dependency-management/publish-local/project/build.properties b/src/sbt-test/dependency-management/publish-local/project/build.properties new file mode 100644 index 000000000..5a5bc0dec --- /dev/null +++ b/src/sbt-test/dependency-management/publish-local/project/build.properties @@ -0,0 +1,2 @@ +project.name=Publish Test +project.version=1.0 \ No newline at end of file diff --git a/src/sbt-test/dependency-management/publish-local/project/build/MultiPublishTest.scala b/src/sbt-test/dependency-management/publish-local/project/build/MultiPublishTest.scala new file mode 100644 index 000000000..af013d8ee --- /dev/null +++ b/src/sbt-test/dependency-management/publish-local/project/build/MultiPublishTest.scala @@ -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 + } +} \ No newline at end of file diff --git a/src/sbt-test/dependency-management/publish-local/test b/src/sbt-test/dependency-management/publish-local/test new file mode 100644 index 000000000..ce87c08b9 --- /dev/null +++ b/src/sbt-test/dependency-management/publish-local/test @@ -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] \ No newline at end of file