如同我們可以針對多個 Scala 版本進行跨版本建置,我們也可以在保持使用 sbt 1.x 的同時,跨版本建置 sbt 0.13 外掛程式。
crossSbtVersions := Vector("1.2.8", "0.13.18")
如果您需要針對特定 sbt 版本進行變更,您現在可以將它們包含在 src/main/scala-sbt-0.13
和 src/main/scala-sbt-1.0
中。要切換 sbt 版本,請使用
^^ 0.13.18
[info] Setting `sbtVersion in pluginCrossBuild` to 0.13.18
[info] Set current project to sbt-something (in build file:/xxx/sbt-something/)
或使用 ^compile
進行跨版本編譯。
當您想要在多專案建置中混合程式庫和 sbt 外掛程式時,根據 Scala 版本驅動 sbt 版本會更方便。
您可以按如下方式執行此操作
ThisBuild / crossScalaVersions := Seq("2.10.7", "2.12.10")
lazy val core = (project in file("core"))
lazy val plugin = (project in file("sbt-something"))
.enablePlugins(SbtPlugin)
.dependsOn(core)
.settings(
// change the sbt version based on Scala version
pluginCrossBuild / sbtVersion := {
scalaBinaryVersion.value match {
case "2.10" => "0.13.18"
case "2.12" => "1.2.8"
}
}
)
這是由 @jroper 在 sbt-pgp#115 中發現的一種技術。它之所以有效,是因為 sbt 0.13 和 1.x 系列使用不同的 Scala 二進位版本。
使用此設定,您現在可以使用 Scala 跨版本建置命令,例如 +compile
和 +publish
。