Sbt 为什么构建坚持寻找Scala 2.10版本的依赖项?

Sbt 为什么构建坚持寻找Scala 2.10版本的依赖项?,sbt,Sbt,我有一个根build.sbt文件,如下所示: organization := "com.acme.foo" name := "foo-parent" version := "1.0-SNAPSHOT" scalaVersion := "2.11.2" scalacOptions := Seq("-un

我有一个根
build.sbt
文件,如下所示:

organization  := "com.acme.foo"

name          := "foo-parent"

version       := "1.0-SNAPSHOT"

scalaVersion  := "2.11.2"                                                                              

scalacOptions := Seq("-unchecked", "-deprecation", "-encoding", "utf8")

resolvers ++= Seq(
  "spray repo" at "http://repo.spray.io/"
)

lazy val root = project.dependsOn(rest,backend)
lazy val rest = project
lazy val backend = project.dependsOn(rest).settings(mainClass in (Compile, run) := Some("com.acme.foo.Main"), fork in run := true)

run in Compile <<= (run in Compile in backend)

为什么它坚持寻找我的模块的_2.10版本?

我无法告诉你为什么这样做有效,但我遵循了,它解决了我的问题

有人在评论中问我执行
sbt scalaVersion
的结果是什么。原来是:

[info] backend/*:scalaVersion
[info]  2.11.2
[info] rest/*:scalaVersion
[info]  2.11.2
[info] root/*:scalaVersion
[info]  2.10.3
[info] foo/*:scalaVersion
[info]  2.11.2
在接受其他SO帖子的建议后,将my root的build.sbt文件中的
scalaVersion:=“2.11.2”
替换为:

scalaVersion in ThisBuild := "2.11.2"
然后,我从
sbt scalaVersion
得到了正确的结果,我的编译工作正常:

[info] backend/*:scalaVersion
[info]  2.11.2
[info] rest/*:scalaVersion
[info]  2.11.2
[info] root/*:scalaVersion
[info]  2.11.2
[info] foo/*:scalaVersion
[info]  2.11.2

SBT只是有时让我困惑。。。但我必须承认我没有花太多时间去理解它。

你发布的文件对我很有用(sbt 0.13.0)。它编译时没有任何错误。根项目、rest项目和后端项目都有默认的scala版本(在我的例子中是由sbt版本2.10.2定义的)。在顶级目录/项目中运行
sbt scalaVersion
,查看它对每个项目的值。也可能是其中一个依赖项显式地声明了Scala交叉版本。
[info] backend/*:scalaVersion
[info]  2.11.2
[info] rest/*:scalaVersion
[info]  2.11.2
[info] root/*:scalaVersion
[info]  2.11.2
[info] foo/*:scalaVersion
[info]  2.11.2