当我使用sbt构建scala项目时,scala版本的关系是什么?

时间:2018-02-27 02:31:34

标签: sbt sbt-plugin

我正在使用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如何区分它们?

1 个答案:

答案 0 :(得分:5)

sbt本身及其插件使用的Scala版本完全独立于用于编译项目代码的Scala版本。 sbt版本确定它使用的Scala版本:

  • sbt 0.13使用Scala 2.10
  • sbt 1.x使用Scala 2.12

您可以在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。