91 votes

Configurer l'espace de pagination de Java sous Maven 2 sur Windows

J'obtiens ce message lors de la construction de mon projet

java.lang.OutOfMemoryError : Le tas de Java espace

Comment augmenter l'espace de stockage, j'ai 8 Go de RAM, c'est impossible que maven consomme autant, j'ai trouvé ceci http://vikashazrati.wordpress.com/2007/07/26/quicktip-how-to-increase-the-java-heap-memory-for-maven-2-on-linux/ comment le faire sous linux, mais je suis sous Windows 7. Comment changer l'espace de pagination de java sous Windows ?

117voto

Pascal Thivent Points 295221

La variable d'environnement à définir est MAVEN_OPTS Par exemple MAVEN_OPTS=-Xmx1024m . Les maxmem dans le pom ne s'applique que lorsque le plugin du compilateur est défini sur fork javac dans une nouvelle JVM. Sinon, le plugin s'exécute dans la même VM que Maven et donc dans la mémoire transmise en ligne de commande via l'option MAVEN_OPTS .

Pour définir MAVEN_OPTS sous Windows 7 :

  1. Cliquer sur le bouton droit de la souris sur Poste de travail et sélectionnez Propriétés (raccourci clavier : appuyer sur Windows + Pause/Break )
  2. Cliquez sur le bouton Paramètres avancés du système situé dans la navigation de gauche des Propriétés du système pour afficher l'écran d'accueil de l'application. Propriétés avancées du système
  3. Aller à la page Avancé et cliquer el Variables d'environnement situé au bas de l'écran. Propriétés avancées du système fenêtre de configuration
  4. Créer un Nouveau définir la variable d'utilisateur Nom de la variable à MAVEN_OPTS et définir le Valeur de la variable a -Xmx1024m (ou plus)

Ouvrez une nouvelle fenêtre de commande et exécutez mvn .

45voto

Marquee Points 605

Si vous manquez d'espace de stockage pendant l'exécution des tests JUnit, la modification de MAVEN_OPTS peut ne pas vous aider. J'ai continué à essayer différentes configurations dans MAVEN_OPTS sans succès jusqu'à ce que je trouve ce poste qui a résolu le problème.

En fait, les JUnits se séparent dans leur propre environnement et ignorent les paramètres de MAVEN_OPTS. Vous devez configurer surefire dans votre pom pour ajouter plus de mémoire pour les JUnits.

J'espère que cela permettra à quelqu'un d'autre de gagner du temps !


Edit : Copie de la solution de Le blog de Keith Chapman au cas où le lien se romprait un jour :

<plugin>
  <groupId>org.apache.maven.plugins</groupId>
  <artifactId>maven-surefire-plugin</artifactId>
  <configuration>
    <forkMode>pertest</forkMode> 
    <argLine>-Xms256m -Xmx512m</argLine>
    <testFailureIgnore>false</testFailureIgnore> 
    <skip>false</skip> 
    <includes> 
      <include>**/*IntegrationTestSuite.java</include>
    </includes>
  </configuration>
</plugin>

Mise à jour (31/5/2017) : Merci à @johnstosh pour l'avoir signalé - surefire a évolué un peu depuis que j'ai mis cette réponse sur la table. Voici un lien vers leur la documentation et un exemple de code mis à jour (la ligne arg est toujours la partie importante pour cette question) :

  <plugin>
    <groupId>org.apache.maven.plugins</groupId>
    <artifactId>maven-surefire-plugin</artifactId>
    <version>2.20</version>
    <configuration>
        <forkCount>3</forkCount>
        <reuseForks>true</reuseForks>
        <argLine>-Xmx1024m -XX:MaxPermSize=256m</argLine>
        <systemPropertyVariables>
            <databaseSchema>MY_TEST_SCHEMA_${surefire.forkNumber}</databaseSchema>
        </systemPropertyVariables>
        <workingDirectory>FORK_DIRECTORY_${surefire.forkNumber}</workingDirectory>
    </configuration>
  </plugin>

21voto

corsiKa Points 39442

Il devrait s'agir de la même commande, à l'exception de SET au lieu d'EXPORT.

  • set MAVEN_OPTS=-Xmx512m lui donnerait 512Mb d'espace de stockage (heap)
  • mettre MAVEN_OPTS=-Xmx2048m lui donnerait 2Gb de heap

9voto

Steve Points 71

Sur le Mac : Au lieu de JAVA_OPTS y MAVEN_OPTS utiliser _JAVA_OPTIONS à la place. Cela fonctionne !

3voto

kent_e Points 41

Après avoir essayé d'utiliser la variable MAVEN_OPTS sans succès, je suis tombé sur ceci site ce qui a fonctionné pour moi. Il m'a donc suffi d'ajouter -Xms128m -Xmx1024m aux options par défaut de la VM et cela a fonctionné.

Pour les modifier dans Eclipse, allez dans Fenêtre -> Préférences -> Java -> JREs installés. Sélectionnez le JRE/JDK coché et cliquez sur modifier.

Prograide.com

Prograide est une communauté de développeurs qui cherche à élargir la connaissance de la programmation au-delà de l'anglais.
Pour cela nous avons les plus grands doutes résolus en français et vous pouvez aussi poser vos propres questions ou résoudre celles des autres.

Powered by:

X