为什么“全局`中的scalaVersion”没有为所有项目设置scalaVersion?

时间:2014-02-12 05:42:43

标签: scala sbt

阅读Scopes文档后,我预计

scalaVersion in Global := "2.10.3"
object MyProjectBuild extends Build中为所有项目设置scalaVersion

。但是,重新加载项目后,我得到了

> show scalaVersion
[info] subproject1/*:scalaVersion
[info]  2.10.2
[info] subproject2/*:scalaVersion
[info]  2.10.2
[info] all/*:scalaVersion
[info]  2.10.2

ThisBuild代替Global也是如此。其他任何地方都没有设置scalaVersion。我有什么误会? inspect生成(GlobalThisBuild):

> inspect scalaVersion
[info] Setting: java.lang.String = 2.10.2
[info] Description:
[info]  The version of Scala used for building.
[info] Provided by:
[info]  */*:scalaVersion
[info] Defined at:
[info]  (sbt.Defaults) Defaults.scala:211
[info] Reverse dependencies:
[info]  all/*:ivyReport::update
[info]  all/*:dependencyUpdatesData
[info]  all/*:scalaInstance
[info]  all/*:update
[info]  all/*:allDependencies
[info]  all/*:libraryDependencies
[info] Delegates:
[info]  all/*:scalaVersion
[info]  {.}/*:scalaVersion
[info]  */*:scalaVersion
[info] Related:
[info]  */*:scalaVersion
> inspect actual scalaVersion
[info] Setting: java.lang.String = 2.10.2
[info] Description:
[info]  The version of Scala used for building.
[info] Provided by:
[info]  */*:scalaVersion
[info] Defined at:
[info]  (sbt.Defaults) Defaults.scala:211
[info] Delegates:
[info]  all/*:scalaVersion
[info]  {.}/*:scalaVersion
[info]  */*:scalaVersion
[info] Related:
[info]  */*:scalaVersion

我目前为所有项目使用val commonSettings = Seq(scalaVersion := ...)settings(commonSettings: _*)为所有项目设置了常用设置,所以问题就是为什么上述方法不起作用。

2 个答案:

答案 0 :(得分:0)

我的猜测是你正在使用Play Framework或其他一些将自己的密钥添加到构建中的框架,并且你在添加框架密钥之前设置了scala版本。

scalaVersion定义移动到构建脚本的底部,您应该得到您想要的内容(或者移动playScalaSettings或定义上方的任何其他内容)

答案 1 :(得分:0)

该项目使用的是SBT 0.13.0。切换到0.13.1后,它按预期工作,但我在changelog中看不到任何相关内容。