2014-06-14 20 views
5

Scala projemi Gradle ile oluşturmaya çalışırken org.gradle.api.tasks.TaskExecutionException: Execution failed for task ':compileScala' alıyorum ve --stacktrace ile Gradle çalıştırırsam, suçluluk java.lang.OutOfMemoryError: PermGen space olarak görünüyor.Gradle altında Scala derlemesi için PermGen alanını nasıl artırırım?

Derleme görevini başlatmayı ve MaxPermSize'u çatallı JVM argümanlarına eklemeyi denedim, ancak bunların tümü InvocationTargetException'un arkasında ODE'yi taşımaktır.

İşte compileScala görev için benim build.gradle blok:

compileScala { 
    options.fork = true 
    options.forkOptions.jvmArgs = ['-XX:MaxPermSize=512m'] 
    scalaCompileOptions.additionalParameters = [ 
     "-feature", 
     "-language:reflectiveCalls", // used for config structural typing 
     "-language:postfixOps" 
    ] 
} 

ben küresel $JAVA_OPTIONS kullanarak PermGen alanını artırarak bu geçici bir çözüm biliyorum ama ben kaynağıyla kontrol edebilirsiniz bir çözümü tercih ediyorum Böylece, hiç kimsenin projeyi inşa etmek için yerel olarak hiçbir şeyi kişiselleştirmemesi gerekiyor.

FWIW, Mac OS 10.9.3 üzerinde Java 1.6.0_65 altında Scala 2.10.3 ile Gradle 1.11 kullanıyorum.

cevap

5

Bulunamadı: ScalaCompile görevi options özelliğine sahip olsa da, bu özellik Scala derleme için kullanılmaz; Bunun yerine scalaCompileOptions kullanmanız gerekir. Sırasıyla kendi forkOptions özelliğine sahiptir.

compileScala { 
    scalaCompileOptions.fork = true 
    scalaCompileOptions.forkOptions.jvmArgs = ['-XX:MaxPermSize=512m'] 
    scalaCompileOptions.additionalParameters = [ 
     "-feature", 
     "-language:reflectiveCalls", // used for config structural typing 
     "-language:postfixOps" 
    ] 
} 
+2

'ScalaCompile # options', Scala/Java ortak derlemesi için Java derleme seçenekleridir. javaOptions daha iyi bir isim olurdu. –

+0

Durumun böyle olup olmadığını merak ettim. –

İlgili konular