diff --git a/main/src/main/scala/sbt/Defaults.scala b/main/src/main/scala/sbt/Defaults.scala index 3011f79ba..0dd04547b 100644 --- a/main/src/main/scala/sbt/Defaults.scala +++ b/main/src/main/scala/sbt/Defaults.scala @@ -2835,14 +2835,21 @@ object Classpaths { ) ) - private val publishSbtPluginMavenStyle = Def.task { - sbtPlugin.value && publishMavenStyle.value - } + private lazy val publishSbtPluginMavenStyle = Def.task(sbtPlugin.value && publishMavenStyle.value) + private lazy val packagedDefaultArtifacts = packaged(defaultArtifactTasks) + private lazy val emptyArtifacts = Def.task(Map.empty[Artifact, File]) + val jvmPublishSettings: Seq[Setting[_]] = Seq( artifacts := artifactDefs(defaultArtifactTasks).value, packagedArtifacts := Def - .ifS(publishSbtPluginMavenStyle)(mavenArtifactsOfSbtPlugin)(packaged(defaultArtifactTasks)) + .ifS(publishSbtPluginMavenStyle)(mavenArtifactsOfSbtPlugin)(packagedDefaultArtifacts) .value, + // publishLocal needs legacy artifacts (see https://github.com/sbt/sbt/issues/7285) + publishLocal / packagedArtifacts ++= { + if (sbtPlugin.value && !sbtPluginPublishLegacyMavenStyle.value) { + packagedDefaultArtifacts.value + } else Map.empty[Artifact, File] + } ) ++ RemoteCache.projectSettings /** @@ -2867,9 +2874,7 @@ object Classpaths { } val packages = legacyPackages.map { case (artifact, file) => copyArtifact(artifact, file) } val legacyPackagedArtifacts = Def - .ifS(sbtPluginPublishLegacyMavenStyle.toTask)(packaged(defaultArtifactTasks))( - Def.task(Map.empty[Artifact, File]) - ) + .ifS(sbtPluginPublishLegacyMavenStyle.toTask)(packagedDefaultArtifacts)(emptyArtifacts) .value packages + (addSuffix(legacyArtifact) -> pom) ++ legacyPackagedArtifacts } diff --git a/sbt-app/src/sbt-test/dependency-management/sbt-plugin-publish/build.sbt b/sbt-app/src/sbt-test/dependency-management/sbt-plugin-publish/build.sbt index 27cb09743..b49b1a248 100644 --- a/sbt-app/src/sbt-test/dependency-management/sbt-plugin-publish/build.sbt +++ b/sbt-app/src/sbt-test/dependency-management/sbt-plugin-publish/build.sbt @@ -73,6 +73,18 @@ lazy val testMaven2 = project.in(file("test-maven-2")) ).value ) +lazy val testLocal2 = project.in(file("test-local-2")) + .settings( + addSbtPlugin("org.example" % "sbt-plugin-2" % "0.1.0-SNAPSHOT"), + checkUpdate := checkUpdateDef( + "sbt-plugin-2.jar", // resolved from local repository + "sbt-plugin-example-diamond_2.12_1.0-0.5.0.jar", + "sbt-plugin-example-left_2.12_1.0-0.3.0.jar", + "sbt-plugin-example-right_2.12_1.0-0.3.0.jar", + "sbt-plugin-example-bottom_2.12_1.0-0.3.0.jar", + ).value + ) + lazy val checkPackagedArtifacts = taskKey[Unit]("check the packaged artifacts") lazy val checkPublish = taskKey[Unit]("check publish") lazy val checkUpdate = taskKey[Unit]("check update") diff --git a/sbt-app/src/sbt-test/dependency-management/sbt-plugin-publish/test b/sbt-app/src/sbt-test/dependency-management/sbt-plugin-publish/test index e5e7096dd..4816c7b88 100644 --- a/sbt-app/src/sbt-test/dependency-management/sbt-plugin-publish/test +++ b/sbt-app/src/sbt-test/dependency-management/sbt-plugin-publish/test @@ -17,3 +17,8 @@ > testMaven2 / checkUpdate > set testMaven2 / useCoursier := false > testMaven2 / checkUpdate + +> sbtPlugin2 / publishLocal +> testLocal2 / checkUpdate +> set testLocal2 / useCoursier := false +> testLocal2 / checkUpdate