1. 跨版本建置外掛程式

跨版本建置外掛程式 

如同我們可以針對多個 Scala 版本進行跨版本建置,我們也可以在保持使用 sbt 1.x 的同時,跨版本建置 sbt 0.13 外掛程式。

crossSbtVersions := Vector("1.2.8", "0.13.18")

如果您需要針對特定 sbt 版本進行變更,您現在可以將它們包含在 src/main/scala-sbt-0.13src/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 外掛程式 

當您想要在多專案建置中混合程式庫和 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"
      }
    }
  )

這是由 @jropersbt-pgp#115 中發現的一種技術。它之所以有效,是因為 sbt 0.13 和 1.x 系列使用不同的 Scala 二進位版本。

使用此設定,您現在可以使用 Scala 跨版本建置命令,例如 +compile+publish