diff --git a/main/src/main/scala/sbt/Defaults.scala b/main/src/main/scala/sbt/Defaults.scala index 5a491f973..e6fa6262c 100644 --- a/main/src/main/scala/sbt/Defaults.scala +++ b/main/src/main/scala/sbt/Defaults.scala @@ -692,6 +692,7 @@ object Defaults extends BuildCommon { crossSbtVersions := Vector((pluginCrossBuild / sbtVersion).value), crossTarget := makeCrossTarget( target.value, + scalaVersion.value, scalaBinaryVersion.value, (pluginCrossBuild / sbtBinaryVersion).value, sbtPlugin.value, @@ -772,8 +773,23 @@ object Defaults extends BuildCommon { else Vector() } - def makeCrossTarget(t: File, sv: String, sbtv: String, plugin: Boolean, cross: Boolean): File = { - val scalaBase = if (cross) t / ("scala-" + sv) else t + @deprecated("Use constructor with scalaVersion and scalaBinaryVersion", "1.5.0") + def makeCrossTarget(t: File, bv: String, sbtv: String, plugin: Boolean, cross: Boolean): File = { + val scalaBase = if (cross) t / ("scala-" + bv) else t + if (plugin) scalaBase / ("sbt-" + sbtv) else scalaBase + } + + def makeCrossTarget( + t: File, + scalaVersion: String, + scalaBinaryVersion: String, + sbtv: String, + plugin: Boolean, + cross: Boolean + ): File = { + val scalaSuffix = + if (ScalaArtifacts.isScala3(scalaVersion)) scalaVersion else scalaBinaryVersion + val scalaBase = if (cross) t / ("scala-" + scalaSuffix) else t if (plugin) scalaBase / ("sbt-" + sbtv) else scalaBase } diff --git a/sbt/src/sbt-test/project/scala3-cross-target/build.sbt b/sbt/src/sbt-test/project/scala3-cross-target/build.sbt new file mode 100644 index 000000000..d87ccac1b --- /dev/null +++ b/sbt/src/sbt-test/project/scala3-cross-target/build.sbt @@ -0,0 +1,3 @@ +scalaVersion := "3.0.0-RC2-bin-20210328-cca5f8f-NIGHTLY" +name := "foo" +version := "1.0.0" diff --git a/sbt/src/sbt-test/project/scala3-cross-target/src/main/scala/Foo.scala b/sbt/src/sbt-test/project/scala3-cross-target/src/main/scala/Foo.scala new file mode 100644 index 000000000..d37c10456 --- /dev/null +++ b/sbt/src/sbt-test/project/scala3-cross-target/src/main/scala/Foo.scala @@ -0,0 +1 @@ +object Foo \ No newline at end of file diff --git a/sbt/src/sbt-test/project/scala3-cross-target/test b/sbt/src/sbt-test/project/scala3-cross-target/test new file mode 100644 index 000000000..ff09e0f19 --- /dev/null +++ b/sbt/src/sbt-test/project/scala3-cross-target/test @@ -0,0 +1,7 @@ +> compile + +$ exists target/scala-3.0.0-RC2-bin-20210328-cca5f8f-NIGHTLY/classes/Foo$.class + +> package + +$ exists target/scala-3.0.0-RC2-bin-20210328-cca5f8f-NIGHTLY/foo_3.0.0-RC2-1.0.0.jar