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

时间:2014-08-18 03:58:51

标签: sbt

我有一个如下所示的根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)

backendrest模块中,scalaVersion也设置为 2.11.2 ,但是当我尝试编译时,我一直收到此错误来自根:

[warn]  ::::::::::::::::::::::::::::::::::::::::::::::
[warn]  ::          UNRESOLVED DEPENDENCIES         ::
[warn]  ::::::::::::::::::::::::::::::::::::::::::::::
[warn]  :: com.acme.foo#rest_2.10;1.0-SNAPSHOT: not found
[warn]  :: com.acme#foo_2.10;1.0-SNAPSHOT: not found
[warn]  ::::::::::::::::::::::::::::::::::::::::::::::

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

1 个答案:

答案 0 :(得分:2)

我无法告诉你为什么会这样,但我跟着this answer,它解决了我的问题

有人在评论中问我执行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帖子的建议后,用以下内容替换我的root&#39; s build文件中的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有时会让我感到困惑......但我必须承认,我并没有投入大量时间来理解它。