首先,使用哪个版本的 Scala 来生成构建并不重要。构建系统可以使用 2.10.4 版本,这不会阻止您的代码使用 2.11.1 版本。
要查看您的 scala 版本的问题,您应该考虑将直接添加的设置添加build.sbt
到根项目中,而不是添加到其他项目中。您可以通过一个最小的项目看到这一点,例如:
$ cat build.sbt
scalaVersion := "2.11.1"
lazy val subproj = project in (file("subproj"))
那么 sbt 的输出是这样的:
> show scalaVersion
[info] subproj/*:scalaVersion
[info] 2.10.4
[info] sbttest/*:scalaVersion
[info] 2.11.1
那么,如何解决这个问题?
我们可以创建一个lazy val
包含 a 的Seq[Setting[_]]
,并使用该方法将其添加到子项目定义中settings()
。
build.sbt
这是一个为所有项目添加相同设置的示例:
$ cat build.sbt
lazy val root = project.in(file("."))
.aggregate(subproj)
.dependsOn(subproj)
.settings(commonSettings: _*)
lazy val subproj = project.in(file("subproj"))
.settings(commonSettings: _*)
lazy val commonSettings = Seq(
scalaVersion := "2.11.1"
)
_*
是必需的,因为settings()
被定义为要求Setting[_]*
而不是Seq[Setting[_]]
,所以_*
在两种类型之间进行转换。另请参阅:param: _* 在 Scala 中是什么意思?
sbt 的输出是:
> show scalaVersion
[info] subproj/*:scalaVersion
[info] 2.11.1
[info] root/*:scalaVersion
[info] 2.11.1
这种方法可以很容易地应用于您的构建。