如何更改Scala版本的构建定义?

时间:2012-08-14 07:53:51

标签: scala sbt

我正在开发一个简单的SBT项目,其中包含用于对Scala Parallel集合进行基准测试的InputTasks。

我已经定义了InputKeys并在遇到问题时开始编写任务。

由于我的基准测试需要 Scala 2.10.0-M5 ,我尝试在我的build.sbt中执行此操作:

name := "scala-parallel-collection-benchmark"

version := "1.0.0"

organization := "com.google.summer"

scalaVersion := "2.10.0-M5"

但是,在编译时我收到以下错误:

[info] Loading project definition from C:\Users\Administrator\scala-parallel-collection-benchmark\project
[info] Compiling 1 Scala source to C:\Users\Administrator\scala-parallel-collection-benchmark\project\target\scala-2.9.1\sbt-0.11.3\classes...
[error] C:\Users\Administrator\scala-parallel-collection-benchmark\project\Build.scala:47: value tasksupport is not a member of scala.collection.parallel.mutable.ParArray[Int]
[error]                 collection.tasksupport = new ForkJoinTaskSupport(new ForkJoinPool(par))
[error]                            ^
[error] one error found
[error] {file:/C:/Users/Administrator/scala-parallel-collection-benchmark/project/}default-e0b2a2/compile:compile: Compilation failed

它似乎仍然使用 Scala 2.9.1 来编译它。

如何设置SBT以便使用Scala 2.10.0-M5编译我的代码?

3 个答案:

答案 0 :(得分:6)

scalaVersion仅影响用于编译“实际”源代码的Scala版本(通常位于src/...)。您的错误来自构建定义的一部分(在project/下),它始终使用sbt构建的Scala版本进行编译。

答案 1 :(得分:4)

您无法修改用于编译项目定义的Scala版本,因为它必须是与用于编译SBT本身的版本兼容的版本二进制文件。在这方面正在研究一些灵活性,但是,现在,它是固定的。

设置scalaVersion将更改用于编译项目本身的Scala版本。该项目可以使用完全不同的版本进行编译,事实上,您甚至可以让SBT使用多个Scala版本编译您的项目。

答案 2 :(得分:-5)

你可以在文件“project / build.properties”中更改scala版本 例如sbt.version = 0.11.2