diff --git a/main/src/main/scala/sbt/Defaults.scala b/main/src/main/scala/sbt/Defaults.scala index 3782bd24b..5b60e6aa4 100644 --- a/main/src/main/scala/sbt/Defaults.scala +++ b/main/src/main/scala/sbt/Defaults.scala @@ -332,9 +332,6 @@ object Defaults extends BuildCommon { envVars :== Map.empty, sbtVersion := appConfiguration.value.provider.id.version, sbtBinaryVersion := binarySbtVersion(sbtVersion.value), - // `pluginCrossBuild` scoping is based on sbt-cross-building plugin. - // The idea here is to be able to define a `sbtVersion in pluginCrossBuild`, which - // directs the dependencies of the plugin to build to the specified sbt plugin version. pluginCrossBuild / sbtVersion := sbtVersion.value, onLoad := idFun[State], onUnload := idFun[State], @@ -3102,7 +3099,7 @@ object Classpaths { Defaults.globalDefaults( Seq( publishMavenStyle :== true, - sbtPluginPublishLegacyMavenStyle :== true, + sbtPluginPublishLegacyMavenStyle :== false, publishArtifact :== true, (Test / publishArtifact) :== false ) diff --git a/main/src/main/scala/sbt/plugins/SbtPlugin.scala b/main/src/main/scala/sbt/plugins/SbtPlugin.scala index c38d34b76..a37cd8b6f 100644 --- a/main/src/main/scala/sbt/plugins/SbtPlugin.scala +++ b/main/src/main/scala/sbt/plugins/SbtPlugin.scala @@ -10,12 +10,19 @@ package sbt package plugins import sbt.Def.Setting -import sbt.Keys._ +import sbt.Keys.* +import sbt.SlashSyntax0.* -object SbtPlugin extends AutoPlugin { +object SbtPlugin extends AutoPlugin: override def requires = ScriptedPlugin override lazy val projectSettings: Seq[Setting[_]] = Seq( - sbtPlugin := true + sbtPlugin := true, + pluginCrossBuild / sbtVersion := { + scalaBinaryVersion.value match + case "3" => sbtVersion.value + case "2.12" => "1.5.8" + case "2.10" => "0.13.18" + }, ) -} +end SbtPlugin diff --git a/sbt-app/src/sbt-test/project-matrix/plugin/build.sbt b/sbt-app/src/sbt-test/project-matrix/plugin/build.sbt new file mode 100644 index 000000000..ad99d07fd --- /dev/null +++ b/sbt-app/src/sbt-test/project-matrix/plugin/build.sbt @@ -0,0 +1,28 @@ +val scala3 = "3.3.3" +val scala212 = "2.12.19" + +organization := "com.example" +version := "0.1.0-SNAPSHOT" + +lazy val checkSbt2Plugin = taskKey[Unit]("") + +lazy val plugin = (projectMatrix in file("plugin")) + .enablePlugins(SbtPlugin) + .settings( + organization := "com.example", + name := "sbt-example", + // TODO: Once 2.0 is released we can move this check to the `test` file + checkSbt2Plugin := { + val repo = (ThisBuild / baseDirectory).value / "repo" + val sbtV = sbtBinaryVersion.value + val expected = (repo / "com" / "example" / + s"sbt-example_sbt${sbtV}_3" / + "0.1.0-SNAPSHOT" / + s"sbt-example_sbt${sbtV}_3-0.1.0-SNAPSHOT.pom") + assert(expected.exists, s"$expected did not exist") + }, + ) + .jvmPlatform(scalaVersions = Seq(scala3, scala212)) + +publishMavenStyle := true +publishTo := Some(Resolver.file("test-publish", (ThisBuild / baseDirectory).value / "repo/")) diff --git a/sbt-app/src/sbt-test/project-matrix/plugin/test b/sbt-app/src/sbt-test/project-matrix/plugin/test new file mode 100644 index 000000000..c478cd9e0 --- /dev/null +++ b/sbt-app/src/sbt-test/project-matrix/plugin/test @@ -0,0 +1,8 @@ +> compile + +> publish + +$ exists repo/com/example/sbt-example_2.12_1.0/0.1.0-SNAPSHOT/sbt-example_2.12_1.0-0.1.0-SNAPSHOT.pom +$ absent repo/com/example/sbt-example_2.12_1.0/0.1.0-SNAPSHOT/sbt-example-0.1.0-SNAPSHOT.pom + +> checkSbt2Plugin