2012-08-14 43 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