2017-05-08 7 views
2

Exécution d'un grand Gradle construire (avec JDK7) Je reçois deux OutOfMemoryErrors:Réglage JAVA_OPTS et JAVA_TOOL_OPTIONS dans Gradle

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

Quand je mets les deux variables d'environnement ci-dessous, la construction traverse et fonctionne très bien:

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

Existe-t-il un moyen d'inclure ces paramètres dans gradle.properties ou dans build.gradle? Si oui, quelle est l'utilisation correcte?

Je l'ai déjà essayé cela en build.gradle:

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

mais cela ne fonctionne pas.

+0

Avez-vous trouvé ma réponse utile de toute façon? – Opal

Répondre

0

Pourriez-vous s'il vous plaît essayer de créer un fichier gradle.properties qui devrait être situé à côté de la racine build.gradle et la volonté avec le contenu suivant:

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

Une autre option est de définir les options requises par compileJava tâche, s'il vous plaît voir here et here.

Malheureusement aucune idée de comment JAVA_TOOL_OPTIONS peut être réglé, il semble non pris en charge.

+0

La solution 'JAVA_TOOL_OPTIONS' n'est donc pas prise en charge et doit être définie manuellement dans chaque environnement CI/CD et dans la machine du développeur? – user3105453

+0

@ user3105453, probablement oui. – Opal

+2

Je crois que 'org.gradle.jvmargs' affecte uniquement la configuration de la mémoire du démon Gradle, pas la JVM. – Gi0rgi0s

0

D'après ce que je rassemblerai les gradlew est destiné à être peaufiné. L'ajout de ces variables d'environnement dans le script gradlew serait donc acceptable et le paramètre serait disponible dans tous les environnements CI.