本文翻譯自 # # What's the relationship of the versions of scala when I use sbt to build a scala project?
譯者:耐心的農(nóng)夫2020
時(shí)間:2020-03-30 12:08:00
問(wèn)題
我正在用 SBT 1.x
構(gòu)建一個(gè) Scala 項(xiàng)目(用 Scala 2.11 寫(xiě)的)。有一些 Scala 版本讓我感到困惑。
SBT 1.x => Scala 2.12
SBT plugin => Scala 2.x
My project => Scala 2.11
請(qǐng)幫我弄明白這些 Scala 版本之間的差異和關(guān)系。SBT 在編譯或者運(yùn)行這個(gè)項(xiàng)目的時(shí)候是如何區(qū)分它們的淘钟?
回答
sbt 自己和它的插件使用的 Scala 版本完全獨(dú)立于編譯你項(xiàng)目的代碼使用的 Scala 版本。sbt 的版本決定了它使用的 Scala版本芜飘。
- sbt 0.13 使用 Scala 2.10
- sbt 1.x 使用 Scala 2.12
你可以在 project/build.properties
文件中設(shè)置 sbt 的版本蜀变,例如:
sbt.version = 1.1.1
你想使用的 sbt 插件必須與給定的 sbt 版本兼容鼠哥,許多 sbt 插件都使用 0.13 和 1.x 交叉編譯過(guò)驻售。
你可以使用 build.sbt
配置文件中的 scalaVersion
配置項(xiàng)來(lái)指定你項(xiàng)目的代碼需要使用的 Scala 版本露久。例如:
scalaVersion := "2.12.4"
再次強(qiáng)調(diào)一下,上面項(xiàng)目代碼使用的 Scala 版本和 sbt 使用的 Scala 版本是相互獨(dú)立的欺栗。你也可以指定不同的 Scala 版本交叉編譯你的代碼毫痕。例如:
scalaVersion := "2.12.4"
crossScalaVersions := Seq("2.11.12", "2.12.4")
如果你用 sbt 運(yùn)行 compile
,將使用 Scala 2.12.4 編譯項(xiàng)目代碼迟几。如果你用 sbt 運(yùn)行 +compile
消请,將先使用 Scala 2.11.12 編譯項(xiàng)目代碼,再使用 2.12.4 編譯項(xiàng)目代碼类腮。關(guān)于 Cross-building 可以參考 sbt 文檔臊泰。