【问题标题】:Multiple sbt projects with the same root具有相同根目录的多个 sbt 项目
【发布时间】:2021-10-04 10:01:00
【问题描述】:

我想要多个具有完全相同根的 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"
  )

【问题讨论】:

  • 我猜不同的设置不只是Scala版本?
  • 否则 SBT 本身就支持它,或者像 sbt-projectmatrix 这样的插件可以帮助你'
  • @GaëlJ 正确,我刚刚抛出的 Scala 版本是一个例子。我还需要不同的依赖版本和可能的其他更改。看起来 sbt-projectmatrix 可能会起作用。我去看看!

标签: scala sbt


【解决方案1】:

这不是一个完美的答案,但我在this page 上找到了以下建议,这似乎适用于这个简单的示例。

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 重新定义(尽管我在上面的示例中只包含了编译)。

【讨论】:

    猜你喜欢
    • 2015-11-24
    • 2012-01-26
    • 1970-01-01
    • 2011-10-22
    • 2017-07-26
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多