我正在使用SBT 1.x构建一个scala项目(在scala 2.11中编写)。有一些"版本的scala"这让我很难过。
SBT 1.x => scala 2.12
SBT plugin => scala 2.x
My project => scala 2.11
请帮助我弄清楚它们之间的区别或关系。在编译或运行项目时,SBT如何区分它们?
答案 0 :(得分:5)
sbt本身及其插件使用的Scala版本完全独立于用于编译项目代码的Scala版本。 sbt版本确定它使用的Scala版本:
您可以在project/build.properties
中设置此版本,例如:
sbt.version = 1.1.1
您要使用的sbt插件必须与给定版本的sbt兼容(并且许多插件与0.13和1.x交叉编译)。
要设置要用于项目代码的Scala版本,请使用scalaVersion
中的build.sbt
设置:
scalaVersion := "2.12.4"
同样,它独立于sbt的版本。您还可以交叉编译几个Scala版本的代码:
scalaVersion := "2.12.4"
crossScalaVersions := Seq("2.11.12", "2.12.4")
然后,如果在sbt中运行compile
,它将使用Scala 2.12.4,如果运行+compile
,它将首先使用Scala 2.11.12然后使用2.12.4进行编译。有关Cross-building的更多信息,请参阅sbt docs。