Установка 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 и новее.

Другие вопросы по тегам