diff --git a/sbt-crossproject-test/src/sbt-test/new-api/shared-cross-sources/build.sbt b/sbt-crossproject-test/src/sbt-test/new-api/shared-cross-sources/build.sbt new file mode 100644 index 0000000..3192e33 --- /dev/null +++ b/sbt-crossproject-test/src/sbt-test/new-api/shared-cross-sources/build.sbt @@ -0,0 +1,5 @@ +import sbtcrossproject.{crossProject, CrossType} + +lazy val foo = crossProject(JVMPlatform).settings( + crossScalaVersions := Seq("2.12.14", "2.13.6", "3.0.0") +) diff --git a/sbt-crossproject-test/src/sbt-test/new-api/shared-cross-sources/foo/shared/src/main/scala-2.12/BinaryBar.scala b/sbt-crossproject-test/src/sbt-test/new-api/shared-cross-sources/foo/shared/src/main/scala-2.12/BinaryBar.scala new file mode 100644 index 0000000..c3e7024 --- /dev/null +++ b/sbt-crossproject-test/src/sbt-test/new-api/shared-cross-sources/foo/shared/src/main/scala-2.12/BinaryBar.scala @@ -0,0 +1,3 @@ +object BinaryBar { + val binary = "2.13" +} diff --git a/sbt-crossproject-test/src/sbt-test/new-api/shared-cross-sources/foo/shared/src/main/scala-2.13/BinaryBar.scala b/sbt-crossproject-test/src/sbt-test/new-api/shared-cross-sources/foo/shared/src/main/scala-2.13/BinaryBar.scala new file mode 100644 index 0000000..32806f3 --- /dev/null +++ b/sbt-crossproject-test/src/sbt-test/new-api/shared-cross-sources/foo/shared/src/main/scala-2.13/BinaryBar.scala @@ -0,0 +1,3 @@ +object BinaryBar { + val binary = "2.12" +} diff --git a/sbt-crossproject-test/src/sbt-test/new-api/shared-cross-sources/foo/shared/src/main/scala-2/EpochBar.scala b/sbt-crossproject-test/src/sbt-test/new-api/shared-cross-sources/foo/shared/src/main/scala-2/EpochBar.scala new file mode 100644 index 0000000..049c368 --- /dev/null +++ b/sbt-crossproject-test/src/sbt-test/new-api/shared-cross-sources/foo/shared/src/main/scala-2/EpochBar.scala @@ -0,0 +1,3 @@ +object EpochBar { + val epoch = 2 +} diff --git a/sbt-crossproject-test/src/sbt-test/new-api/shared-cross-sources/foo/shared/src/main/scala-3/BinaryBar.scala b/sbt-crossproject-test/src/sbt-test/new-api/shared-cross-sources/foo/shared/src/main/scala-3/BinaryBar.scala new file mode 100644 index 0000000..c0d8682 --- /dev/null +++ b/sbt-crossproject-test/src/sbt-test/new-api/shared-cross-sources/foo/shared/src/main/scala-3/BinaryBar.scala @@ -0,0 +1,3 @@ +object BinaryBar { + val binary = "3" +} diff --git a/sbt-crossproject-test/src/sbt-test/new-api/shared-cross-sources/foo/shared/src/main/scala-3/EpochBar.scala b/sbt-crossproject-test/src/sbt-test/new-api/shared-cross-sources/foo/shared/src/main/scala-3/EpochBar.scala new file mode 100644 index 0000000..1b74021 --- /dev/null +++ b/sbt-crossproject-test/src/sbt-test/new-api/shared-cross-sources/foo/shared/src/main/scala-3/EpochBar.scala @@ -0,0 +1,3 @@ +object EpochBar { + val epoch = 3 +} diff --git a/sbt-crossproject-test/src/sbt-test/new-api/shared-cross-sources/foo/shared/src/main/scala/Foo.scala b/sbt-crossproject-test/src/sbt-test/new-api/shared-cross-sources/foo/shared/src/main/scala/Foo.scala new file mode 100644 index 0000000..5542154 --- /dev/null +++ b/sbt-crossproject-test/src/sbt-test/new-api/shared-cross-sources/foo/shared/src/main/scala/Foo.scala @@ -0,0 +1,6 @@ +object Foo { + def main(args: Array[String]): Unit = { + println(EpochBar.epoch) + println(BinaryBar.binary) + } +} diff --git a/sbt-crossproject-test/src/sbt-test/new-api/shared-cross-sources/project/build.properties b/sbt-crossproject-test/src/sbt-test/new-api/shared-cross-sources/project/build.properties new file mode 100644 index 0000000..9edb75b --- /dev/null +++ b/sbt-crossproject-test/src/sbt-test/new-api/shared-cross-sources/project/build.properties @@ -0,0 +1 @@ +sbt.version=1.5.4 diff --git a/sbt-crossproject-test/src/sbt-test/new-api/shared-cross-sources/test b/sbt-crossproject-test/src/sbt-test/new-api/shared-cross-sources/test new file mode 100644 index 0000000..35979c1 --- /dev/null +++ b/sbt-crossproject-test/src/sbt-test/new-api/shared-cross-sources/test @@ -0,0 +1 @@ +> +fooJVM/run diff --git a/sbt-crossproject/src/main/scala/sbtcrossproject/CrossProject.scala b/sbt-crossproject/src/main/scala/sbtcrossproject/CrossProject.scala index 674ea6e..db18a48 100644 --- a/sbt-crossproject/src/main/scala/sbtcrossproject/CrossProject.scala +++ b/sbt-crossproject/src/main/scala/sbtcrossproject/CrossProject.scala @@ -211,10 +211,19 @@ object CrossProject { cross: Boolean): Seq[File] = { sharedSrcDir match { case Some(dir) => - if (cross) - Seq(dir.getParentFile / s"${dir.name}-$scalaBinaryVersion", dir) - else + if (cross) { + val scalaEpochVersion = scalaBinaryVersion.takeWhile(_ != '.') + Seq( + Some(dir.getParentFile / s"${dir.name}-$scalaBinaryVersion"), + if (scalaEpochVersion != scalaBinaryVersion) + Some(dir.getParentFile / s"${dir.name}-$scalaEpochVersion") + else + None, + Some(dir) + ).flatten + } else { Seq(dir) + } case None => Seq() } }