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