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