在 Gradle 中设置 JAVA_OPTS 和 JAVA_TOOL_OPTIONS

use*_*453 5 gradle java-opts build.gradle

运行大型 Gradle 构建(使用 JDK7)我收到两个OutOfMemoryErrors

Exception: java.lang.OutOfMemoryError thrown from the UncaughtExceptionHandler in thread "main"
Exception: java.lang.OutOfMemoryError thrown from the UncaughtExceptionHandler in thread "Test worker" 
Run Code Online (Sandbox Code Playgroud)

当我设置下面的两个环境变量时,构建运行并正常工作:

export JAVA_OPTS="-Xmx2048m -XX:MaxPermSize=1024m"
export JAVA_TOOL_OPTIONS="-Xmx1024m -XX:MaxPermSize=1024m -Xms768m"
./gradlew test --stacktrace
...
Picked up JAVA_TOOL_OPTIONS: -Xmx1024m -XX:MaxPermSize=1024m -Xms768m
...
Run Code Online (Sandbox Code Playgroud)

有没有办法将这些设置包含在gradle.properties或 中build.gradle?如果是,正确的用法是什么?

我已经在build.gradle

allprojects {
    System.setProperty('JAVA_OPTS', "-Xmx2048m -XX:MaxPermSize=1024m")
    System.setProperty('JAVA_TOOL_OPTIONS', "-Xmx1024m -XX:MaxPermSize=1024m -Xms768m")
}
Run Code Online (Sandbox Code Playgroud)

但这不起作用。

Opa*_*pal 5

您能否尝试创建一个gradle.properties位于根目录旁边的文件build.gradle,并包含以下内容:

org.gradle.jvmargs=-Xmx2048m -XX:MaxPermSize=1024m 
Run Code Online (Sandbox Code Playgroud)

compileJava另一种选择是通过任务设置所需的选项,请参阅此处此处

不幸的是不知道如何JAVA_TOOL_OPTIONS设置,它似乎不受支持。

  • 我相信 org.gradle.jvmargs 只影响 Gradle 守护进程的内存配置,而不影响 JVM。 (5认同)
  • 那么解决方案是“JAVA_TOOL_OPTIONS”不受支持,需要在每个 CI/CD 环境和开发人员的机器中手动设置? (2认同)