build.sbt
scalaVersion := "2.11.4"
项目/生成属性
sbt.version=0.13.7
然后
> show scalaVersion
[info] 2.11.4
> show crossScalaVersions
[info] List(2.10.4)
> inspect crossScalaVersions
[info] Setting: scala.collection.Seq[java.lang.String] = List(2.10.4)
[info] Description:
[info] The versions of Scala used when cross-building.
[info] Provided by:
[info] */*:crossScalaVersions
[info] Defined at:
[info] (sbt.Defaults) Defaults.scala:237
[info] Delegates:
[info] *:crossScalaVersions
[info] {.}/*:crossScalaVersions
[info] */*:crossScalaVersions
[info] Related:
[info] */*:crossScalaVersions
似乎crossScalaVersions
应该List(2.11.4)
.
看看SBT的源代码,这也是我的想法。
crossScalaVersions := Seq(scalaVersion.value)
为什么crossScalaVersions
不符合scalaVersion
?
scalaVersion.value
是上下文相关的。所以在Defaults.scala
中,它与appConfiguration.value.provider.scalaProvider
*/*:scalaVersion
.它是用于编译项目定义的版本,包括build.sbt
文件(sbt 0.13.7
使用 2.10.4
scala 编译器来编译项目定义)。并且,作为项目定义(包括scalaVersion
)的唯一方法尚未编译,Defaults
执行和定义crossScalaVersions
。所以,*/*:crossScalaVersions
取决于*/*:scalaVersion
而不是proj/*:scalaVersion
.
只需将Provided by
与build.sbt
中的显式scalaVersion := 2.11.4
进行比较:
> inspect scalaVersion
[info] Setting: java.lang.String = 2.11.4
[info] Description:
[info] The version of Scala used for building.
[info] Provided by:
[info] {file:/Users/user/dev/proj/}proj/*:scalaVersion
[info] Defined at:
[info] /Users/user/dev/proj/build.sbt:1
[info] Reverse dependencies (D=derives):
[info] *:allDependencies
[info] D *:scalaBinaryVersion
[info] *:libraryDependencies
[info] *:scalaInstance
[info] *:crossScalaVersions
[info] *:update
[info] Delegates:
[info] *:scalaVersion
[info] {.}/*:scalaVersion
[info] */*:scalaVersion
[info] Related:
[info] */*:scalaVersion
并且没有一个(只是空项目):
> inspect scalaVersion
[info] Setting: java.lang.String = 2.10.4
[info] Description:
[info] The version of Scala used for building.
[info] Provided by:
[info] */*:scalaVersion
[info] Defined at:
[info] (sbt.Defaults) Defaults.scala:232
[info] Reverse dependencies:
[info] *:allDependencies
[info] *:libraryDependencies
[info] *:update
[info] *:scalaInstance
[info] Delegates:
[info] *:scalaVersion
[info] {.}/*:scalaVersion
[info] */*:scalaVersion
[info] Related:
[info] */*:scalaVersion
因此,您只需要在build.sbt
中重新定义*/*:scalaVersion
:
scalaVersion in GlobalScope := "2.11.2"