具有相同根的多个sbt项目

  • 本文关键字:sbt 项目 同根 scala sbt
  • 更新时间 :
  • 英文 :


我想要多个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进行不必要的重新定义(尽管我在上面的示例中只包括编译)。

最新更新