I'm getting org.gradle.api.tasks.TaskExecutionException: Execution failed for task ':compileScala'
trying to build my Scala project with Gradle, and if I run Gradle with --stacktrace
it looks like the culprit is java.lang.OutOfMemoryError: PermGen space
.
I tried forking the compilation task and adding MaxPermSize
to the forked JVM arguments, but all that did is move the OOME behind an InvocationTargetException
.
Here's my build.gradle
block for the compileScala
task:
compileScala {
options.fork = true
options.forkOptions.jvmArgs = ['-XX:MaxPermSize=512m']
scalaCompileOptions.additionalParameters = [
"-feature",
"-language:reflectiveCalls", // used for config structural typing
"-language:postfixOps"
]
}
I know I can work around this by increasing PermGen space globally using $JAVA_OPTIONS
, but I'd prefer a solution that I can check in with the source so that nobody needs to customize anything locally to build the project.
FWIW, I'm using Gradle 1.11 with Scala 2.10.3 under Java 1.6.0_65 on Mac OS 10.9.3.
Found it: Even though the ScalaCompile task has the options
property, that property isn't used for Scala compilation; you need to use scalaCompileOptions
instead. It in turn has its own forkOptions
property.
compileScala {
scalaCompileOptions.fork = true
scalaCompileOptions.forkOptions.jvmArgs = ['-XX:MaxPermSize=512m']
scalaCompileOptions.additionalParameters = [
"-feature",
"-language:reflectiveCalls", // used for config structural typing
"-language:postfixOps"
]
}
If you love us? You can donate to us via Paypal or buy me a coffee so we can maintain and grow! Thank you!
Donate Us With