3

我正在开发一个简单的 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 编译我的代码?

4

3 回答 3

7

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

于 2012-08-14T16:49:37.993 回答
4

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

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

于 2012-08-14T17:25:34.633 回答
-5

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

于 2012-08-15T05:14:41.780 回答