我想要多个sbt项目具有完全相同的根,所以我可以用不同的设置构建相同的代码。我已经尝试了类似于下面的东西,但是sbt只识别第一个项目(root
)。
ThisBuild / version := "0.1.0-SNAPSHOT"
ThisBuild / organization := "com.example"
ThisBuild / organizationName := "example"
lazy val root = (project in file("."))
.settings(
name := "Scala Seed Project",
scalaVersion := "2.13.6"
)
lazy val root2 = (project in file("."))
.settings(
name := "Scala Seed Project",
scalaVersion := "2.12.12"
)
这不是一个完美的答案,但我发现下面的建议似乎对这个简单的例子有效。
ThisBuild / version := "0.1.0-SNAPSHOT"
ThisBuild / organization := "com.example"
ThisBuild / organizationName := "example"
lazy val root = (project in file("target/root"))
.settings(
name := "Scala Seed Project",
scalaVersion := "2.13.6",
Compile / scalaSource := baseDirectory.value / ".." / ".." / "src" / "main" / "scala",
)
lazy val root2 = (project in file("target/root2"))
.settings(
name := "Scala Seed Project",
scalaVersion := "2.12.12",
Compile / scalaSource := baseDirectory.value / ".." / ".." / "src" / "main" / "scala",
)
我不喜欢这个解决方案,因为它需要虚拟目录,并且对于多个任务需要对scalaSource
进行不必要的重新定义(尽管我在上面的示例中只包括编译)。