2

build.sbt

scalaVersion := "2.11.4"

project/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 のソース コードを見てください。私もそう思います。

crossScalaVersions := Seq(scalaVersion.value)

crossScalaVersionsに対応しないのはなぜscalaVersionですか?

4

1 に答える 1

2

scalaVersion.value文脈依存です。だからDefaults.scalaそれは*/*:scalaVersionからappConfiguration.value.provider.scalaProviderです。これは、ファイルを含むプロジェクトの定義をコンパイルするために使用されるバージョンbuild.sbtです (sbt0.13.72.10.4scala-compiler を使用してプロジェクト定義をコンパイルします)。そして、プロジェクトの定義 (を含む) が実行および定義されscalaVersionたときにまだコンパイルされていない唯一の方法です。したがって、notに依存します。DefaultscrossScalaVersions*/*:crossScalaVersions*/*:scalaVersionproj/*: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

そして、1つもありません(空のプロジェクトのみ):

> 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"
于 2015-01-26T13:48:56.143 に答える