2012-08-14 5 views
3

스칼라 병렬 컬렉션을 벤치마킹하기위한 InputTasks를 포함하는 간단한 SBT 프로젝트를 개발 중입니다.빌드 정의에서 스칼라 버전을 변경하는 방법은 무엇입니까?

InputKeys를 정의하고 문제가 발생했을 때 작업을 시작했습니다.

내 벤치 마크 스칼라 2.10.0-M5, 내 build.sbt에서이 일을 시도 요구하기 때문에 :

[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 

그것을 :

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

version := "1.0.0" 

organization := "com.google.summer" 

scalaVersion := "2.10.0-M5" 

그러나, 편집에서 나는 다음과 같은 오류가 발생합니다 여전히 스칼라 2.9.1을 사용하여 컴파일하는 것으로 보입니다.

Scala 2.10.0-M5를 사용하여 코드를 컴파일하도록 SBT를 설정하려면 어떻게해야합니까?

+3

분명히 : 당신은 정말로 Scala 2.10을 사용하여 BUILD DEFINITION을 작성하고 싶습니까? 오류는 실제 소스 코드가 아닌 프로젝트 정의를 포함하고있는 project/Build.scala에 있습니다. 스칼라 버전으로 컴파일 된 스텁 버전은 scalaVersion으로 지정한 스텁 버전이 아닌 src/... – themel

+0

스톰라 버전으로 컴파일 된 것으로서 받아 들일 수 있도록 대답으로 게시 할 수 있습니다. D – Lopina

+1

훨씬 행복하고 행복한 GSoC :) – themel

답변

6

scalaVersion은 "실제"소스 코드 (보통 src/...에 있음)를 컴파일하는 데 사용되는 스칼라 버전에만 영향을줍니다. 오류는 빌드 정의의 일부 (project/ 아래)에서 발생합니다.이 정의는 항상 sbt가 빌드 된 스칼라 버전으로 컴파일됩니다.

+3

스칼라 버전 sbt가 어떻게 구성되어 있습니까? 비슷한 문제가 있습니다. – Nacht

4

프로젝트 정의를 컴파일하는 데 사용되는 스칼라 버전은 SBT 자체를 컴파일하는 데 사용되는 버전과 호환되는 버전이어야하므로 수정할 수 없습니다. 이 점에서 몇 가지 유연성이 연구되고 있지만, 지금은 해결되었습니다.

설정 scalaVersion은 프로젝트 자체를 컴파일하는 데 사용되는 스칼라 버전을 변경합니다. 이 프로젝트는 완전히 다른 버전으로 컴파일 할 수 있습니다. 실제로 SBT가 여러 스칼라 버전으로 프로젝트를 컴파일하도록 할 수도 있습니다.

-5

"project/build.properties"파일의 scala 버전을 과 같이 변경할 수 있습니다. sbt.version = 0.11.2

+1

그것은 sbt 버전입니다 ... – acidghost

관련 문제