2014-06-14 14 views
5

Sto ricevendo org.gradle.api.tasks.TaskExecutionException: Execution failed for task ':compileScala' cercando di costruire il mio progetto Scala con Gradle, e se eseguo Gradle con --stacktrace sembra che il colpevole sia java.lang.OutOfMemoryError: PermGen space.Come posso aumentare lo spazio PermGen per la compilation Scala sotto Gradle?

Ho provato a bifrare l'attività di compilazione e ad aggiungere MaxPermSize agli argomenti JVM biforcati, ma tutto ciò che è stato fatto è spostare OOME dietro uno InvocationTargetException.

Ecco la mia build.gradle blocco per l'attività compileScala:

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

So di poter ovviare a questo, aumentando lo spazio PermGen utilizzando globalmente $JAVA_OPTIONS, ma preferirei una soluzione che posso controllare con la fonte in modo che nessuno debba personalizzare nulla localmente per costruire il progetto.

FWIW, sto usando Gradle 1.11 con Scala 2.10.3 in Java 1.6.0_65 su Mac OS 10.9.3.

risposta

5

Trovato: Sebbene l'attività ScalaCompile abbia la proprietà options, tale proprietà non viene utilizzata per la compilazione Scala; devi invece usare scalaCompileOptions. A sua volta ha la sua proprietà forkOptions.

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' sono le opzioni di compilazione Java per la compilazione congiunta Scala/Java. 'javaOptions' sarebbe stato un nome migliore. –

+0

Mi chiedevo se fosse così. –