2014-06-14 4 views
5

Ich bekomme org.gradle.api.tasks.TaskExecutionException: Execution failed for task ':compileScala' versuchen, mein Scala-Projekt mit Gradle zu bauen, und wenn ich Gradle mit --stacktrace laufen, sieht es aus wie der Schuldige ist java.lang.OutOfMemoryError: PermGen space.Wie erhöhe ich den PermGen-Speicherplatz für die Scala-Kompilierung unter Gradle?

Ich versuchte, die Kompilierungsaufgabe zu forkieren und MaxPermSize zu den gegabelten JVM-Argumenten hinzuzufügen, aber alles, was das tat, ist, das OOME hinter eine InvocationTargetException zu verschieben.

Hier ist mein build.gradle Block für die compileScala Aufgabe:

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

Ich weiß, ich kann global dieses Problem umgehen, indem zunehmenden PermGen Raum $JAVA_OPTIONS, aber ich würde eine Lösung bevorzugen, die ich mit der Quelle eines Check-in Damit niemand etwas anpassen muss, um das Projekt zu erstellen.

FWIW, ich benutze Gradle 1.11 mit Scala 2.10.3 unter Java 1.6.0_65 auf Mac OS 10.9.3.

Antwort

5

Es gefunden: Obwohl die ScalaCompile Aufgabe die options Eigenschaft hat, wird diese Eigenschaft nicht für die Scala-Kompilierung verwendet; Sie müssen stattdessen scalaCompileOptions verwenden. Es hat sein eigenes forkOptions Eigentum.

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

'ScalaCompile # Optionen' sind die Java-Kompilierungsoptionen für die Scala/Java-Kompilierung. 'javaOptions' wäre ein besserer Name gewesen. –

+0

Ich fragte mich, ob das der Fall war. –

Verwandte Themen