build.sbt
scalaVersion := "2.11.4"
项目/ build.properties
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' source code,这也是我的想法。
crossScalaVersions := Seq(scalaVersion.value)
为什么crossScalaVersions
scalaVersion
与<{1}}对应?
答案 0 :(得分:2)
scalaVersion.value
与上下文有关。所以Defaults.scala
来自*/*:scalaVersion
appConfiguration.value.provider.scalaProvider
build.sbt
。它是用于编译项目定义的版本,包括您的0.13.7
文件(sbt 2.10.4
使用scalaVersion
scala-compiler来编译项目定义)。而且,当Defaults
执行crossScalaVersions
并定义*/*:crossScalaVersions
时,您的项目定义(包括*/*:scalaVersion
)的唯一方法尚未编译。因此,proj/*:scalaVersion
取决于Provided by
而不是scalaVersion := 2.11.4
。
只需将build.sbt
与> 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
进行比较:
*/*:scalaVersion
没有一个(只是空项目):
build.sbt
因此,您只需在scalaVersion in GlobalScope := "2.11.2"
中重新定义{{1}}:
{{1}}