在Gradle中设置JAVA_OPTS和JAVA_TOOL_OPTIONS

x759pob2  于 2023-11-18  发布在  Java
关注(0)|答案(3)|浏览(184)

运行大型Gradle构建(使用JDK 7)时,我收到两个OutOfMemoryErrors

Exception: java.lang.OutOfMemoryError thrown from the UncaughtExceptionHandler in thread "main"
Exception: java.lang.OutOfMemoryError thrown from the UncaughtExceptionHandler in thread "Test worker"

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

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
...


是否有办法将这些设置包含在gradle.propertiesbuild.gradle中?如果有,正确的用法是什么?
我在build.gradle中试过:

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


但这行不通

jucafojl

jucafojl1#

请尝试创建一个gradle.properties文件,该文件应该位于root build.gradle旁边,并将其与以下内容一起使用:

org.gradle.jvmargs=-Xmx2048m -XX:MaxPermSize=1024m

字符串
另一种选择是通过compileJava任务设置所需的选项,请参见此处和here
不幸的是,不知道如何设置JAVA_TOOL_OPTIONS,它似乎不支持。

8fsztsew

8fsztsew2#

据我所知,gradlew是要调整的。所以在gradlew脚本中添加这些环境变量是可以接受的,并且该设置在所有CI环境中都可用。

n53p2ov0

n53p2ov03#

由于这个问题是旧的,但仍然相关,我张贴我在官方文档中发现:
基本上,由gradlew distZip生成的运行脚本有一个参数JAVA_OPTS集,可以通过使用gradle插件“application”设置,并通过

plugins {
    id 'application'
}

...
application {
    applicationDefaultJvmArgs = ['-Dgreeting.language=en']
}

字符串
在这个例子中,我将系统属性“greeting.language”设置为“en”。
以类似的方式,你可以这样设置JVM参数:

application {
    applicationDefaultJvmArgs = ['-Xmx2048m', '-XX:MaxPermSize=1024m']
}


在Gradle 6.9.1及更新版本的官方文档中找到了此内容

相关问题