sbt使用错误的scala版本,而不是使用build.sbt中的配置

时间:2013-11-07 06:10:43

标签: scala sbt

我已将这些文件放在当前项目根目录下的build.sbt文件中

scalaHome := Some(file("/Users/ddam/scala-2.10.2"))

scalaVersion := "2.10.2"

我使用

运行了sbt
$ sbt --version
sbt launcher version 0.12.4

但是,当某个特定的依赖关系无法解决时,我看到sbt和scala的错误版本

[warn]  Note: Some unresolved dependencies have extra attributes.  Check that these dependencies exist with the requested attributes.
[warn]      com.typesafe.sbteclipse:sbteclipse-plugin:2.4.0 (sbtVersion=0.12, scalaVersion=2.9.2)

请帮帮我。

2 个答案:

答案 0 :(得分:5)

看起来像sbteclipse requires SBT 0.13.0,您使用的是版本0.12.4。 您可以按照this page上的说明指定SBT版本。

其他一些注意事项:您可能希望使用Scala 2.10.3,而不是2.10.2。

另外,指定scalaHome很奇怪;通常SBT会自动为您取得所需的Scala罐子。 因此,要引导Scala环境,您需要安装的所有内容都是SBT和JDK。

编辑:(解决以下评论): 使用SBT构建代码时,实际上可能使用两个不同版本的Scala。 有SBT版本(运行构建系统的Scala版本),以及项目代码的版本(运行代码的Scala版本)。

SBT的Scala版本由您使用的SBT版本决定。 如果使用0.12.4,SBT将在Scala 2.9.3上运行。 如果使用0.13.0,SBT将在Scala 2.10.3上运行。 您可以按照these instructions控制SBT版本。

要控制项目运行的Scala版本,您可以在scalaVersion中设置<projectRoot>/build.sbt

因此,您正在使用SBT 0.12.4(使用Scala 2.9.3),因此会收到该错误。 SBT试图找到2.9.3的sbteclipse插件,但它不存在,因为它需要SBT 0.13.0(=&gt; Scala 2.10.3)。

答案 1 :(得分:0)

您似乎已正确指定使用Scala 2.10.2编译项目。

sbt 0.12.4总是使用Scala 2.9.x来编译构建文件(即build.sbtproject/下的内容)。这意味着sbt 0.12.x的插件也必须针对2.9.x进行编译,这解释了你所看到的内容。

sbteclipse 2.4.0需要sbt 0.13。如果你想继续使用sbt 0.12.4,请尝试使用sbteclipse 2.2.0。

emchristiansen的答案有很好的补充点。