Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/scala/16.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Scala 为什么交叉尺度厌恶不是尺度厌恶?_Scala_Sbt_Cross Build - Fatal编程技术网

Scala 为什么交叉尺度厌恶不是尺度厌恶?

Scala 为什么交叉尺度厌恶不是尺度厌恶?,scala,sbt,cross-build,Scala,Sbt,Cross Build,构建.sbt scalaVersion := "2.11.4" 项目/构建.属性 sbt.version=0.13.7 然后 似乎crossscalaraversions应该是List(2.11.4) 看看SBT,我也是这么想的 crossScalaVersions := Seq(scalaVersion.value) 为什么crossscalaraversion不对应于scalaraversion?scalaraversion。值取决于上下文。所以在Defaults.scala中,它是*

构建.sbt

scalaVersion := "2.11.4"
项目/构建.属性

sbt.version=0.13.7
然后

似乎
crossscalaraversions
应该是
List(2.11.4)

看看SBT,我也是这么想的

crossScalaVersions := Seq(scalaVersion.value)

为什么
crossscalaraversion
不对应于
scalaraversion

scalaraversion。值
取决于上下文。所以在
Defaults.scala
中,它是
*/*:scalaVersion
来自
appConfiguration.value.provider.scalaProvider
。它是用于编译项目定义的版本,包括
build.sbt
文件(sbt
0.13.7
使用
2.10.4
scala编译器编译项目定义)。当执行
默认值
并定义
交叉缩放
时,作为项目定义(包括
scalaVersion
)的唯一方法尚未编译。因此,
*/*:crossscalaraversion
取决于
*/*:scalaraversion
而不是
proj/*:scalaraversion

只需将
提供的
与显式
scalaversation:=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
scalaVersion in GlobalScope := "2.11.2"
没有一个(只是空项目):

因此,您只需要在
build.sbt
中重新定义
*/*:scalaVersion

> 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
scalaVersion in GlobalScope := "2.11.2"

链接到的代码是sbt的默认值。您的项目中有
交叉缩放选项:=列表(…)
吗?@Marth,没有。那么(我的项目)的默认值是从哪里来的呢?@Marth,我添加了
inspect
,它显示了来自那里的值。他们极大地改变了API-所以现在他们使用宏
.value
来计算键,而不是GlobalScope中的
交叉缩放