2012-08-14 56 views
3

我正在开发一个简单的SBT项目,其中包含用于基准测试Scala Parallel集合的InputTasks。如何更改构建定义的Scala版本?

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

由于我的基准要求斯卡拉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

要清楚:你真的想用Scala 2.10编写你的BUILD定义吗?该错误是在项目/ Build.scala,它应该包含您的项目定义,而不是实际的源代码。这与编译与斯卡拉版本sbt是与内置的,而不是与您指定的一个与scalaVersion,这是在src/... – themel 2012-08-14 08:03:01

+0

的东西你可能想要张贴作为答案,所以我可能会接受它:D – Lopina 2012-08-14 08:38:21

+1

非常感谢,快乐的GSoC :) – themel 2012-08-14 16:50:07

回答

6

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

+3

你如何定义使用哪种Scala版本构建?我有类似的问题。 – Nacht 2013-01-03 21:52:04

4

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

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

-5

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

+1

这是sbt版本... – acidghost 2015-06-11 14:19:37