Установка JAVA_OPTS и JAVA_TOOL_OPTIONS в 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"
Когда я установил две переменные окружения ниже, сборка проходит и работает просто отлично:
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.properties
или в build.gradle
? Если да, то как правильно использовать?
Я уже попробовал это в build.gradle
:
allprojects {
System.setProperty('JAVA_OPTS', "-Xmx2048m -XX:MaxPermSize=1024m")
System.setProperty('JAVA_TOOL_OPTIONS', "-Xmx1024m -XX:MaxPermSize=1024m -Xms768m")
}
но это не работает
3 ответа
Не могли бы вы попытаться создать gradle.properties
файл, который должен находиться рядом с корнем build.gradle
и будет ли это со следующим содержанием:
org.gradle.jvmargs=-Xmx2048m -XX:MaxPermSize=1024m
Другой вариант - установить необходимые параметры с помощью compileJava
Задача, пожалуйста, смотрите здесь и здесь.
К сожалению, не знаю, как JAVA_TOOL_OPTIONS
может быть установлено, кажется, не поддерживается.
Из того, что я собираю, gradlew предназначен для настройки. Таким образом, добавление этих переменных среды в скрипт gradlew будет приемлемым, и настройка будет доступна во всех средах CI.
поскольку этот вопрос старый, но все еще актуальный, я публикую то, что нашел в официальных документах:
По сути, сценарии запуска, генерируемыеgradlew distZip
иметь набор аргументов JAVA_OPTS, который можно установить с помощью «приложения» плагина gradle и установить его с помощью
plugins {
id 'application'
}
...
application {
applicationDefaultJvmArgs = ['-Dgreeting.language=en']
}
в этом примере я устанавливаю для системного свойства «greeting.language» значение «en».
Аналогичным образом вы можете установить аргументы JVM следующим образом:
application {
applicationDefaultJvmArgs = ['-Xmx2048m', '-XX:MaxPermSize=1024m']
}
Нашел это в официальной документации для Gradle 6.9.1 и новее.