web-dev-qa-db-fra.com

Des moyens de rendre Maven plus rapide?

J'ai un projet Java multi-module. Maven met environ 40 secondes pour le construire. J'ai aussi essayé maven avec des constructions multi-threadées en spécifiant les arguments -T et -C pour qu'aucun des threads et cœurs ne soit utilisé. Mais je n'ai pas vu d'amélioration significative dans le temps de mur de mes constructions .
J'utilise maven 3.2.3 et j’ai parfois besoin de construire mon projet très fréquemment .
Je sais que le but propre prend beaucoup de temps mais je ne peux pas l'omettre .
Suggestions s'il vous plaît ....

MODIFIER:
Note: Dans mon cas, le nettoyage ne prend pas beaucoup de temps. Il se termine en 1 seconde. installer prend repos du temps.

25
Shubham Chaurasia

Remarque: la première chose à faire est AFAIK. Aucune autre option intégrée n'est disponible dans maven, à l'exception de toutes les réponses ici.


Exécuter maven build avec plusieurs threads me permet d’accélérer les builds . Par exemple: 

mvn clean install -T100

où -T est pour spécifier le nombre de threads que vous souhaitez en fonction de votre Matériel.

Ci-dessous les variantes de wiki

Maven 3.x a la capacité d'effectuer des constructions parallèles. La commande est comme suit: 

  • mvn -T 4 installation propre Construit avec 4 threads 
  • mvn -T 1C clean install 1 thread par noyau 
  • mVN-T 1.5C propre installer 1,5 thread par unité centrale de traitement

Comment l'exécution est évaluée ( Voir les constructions parallèles dans Maven 3 )?

 enter image description here

Chaque noeud du graphe représente un module dans une construction multi-module, les "niveaux" indiquant simplement la distance au premier module dans le graphe de dépendance du réacteur interne. Maven calcule ce graphique en fonction des dépendances déclarées entre modules pour une construction multi-module. Notez que le projet maven parent est également une dépendance, ce qui explique pourquoi il existe un seul nœud au-dessus de la plupart des graphiques de projet. Les dépendances extérieures au réacteur n'influencent pas ce graphique.

Enfin, si vous voulez ignorer l'exécution du test, vous pouvez également utiliser -DskipTests.

Attention: Certains de vos plugins peuvent ne pas être compatibles avec le constructeur multithread, cela peut fonctionner. mais il donnera un message d'avertissement ci-dessous. vous devrez peut-être consulter la documentation du plug-in pour la prise en charge multithreading.

[WARNING] *****************************************************************                                                                                                                                 
[WARNING] * Your build is requesting parallel execution, but project      *                                                                                                                                 
[WARNING] * contains the following plugin(s) that have goals not marked   *                                                                                                                                 
[WARNING] * as @threadSafe to support parallel building.                  *                                                                                                                                 
[WARNING] * While this /may/ work fine, please look for plugin updates    *                                                                                                                                 
[WARNING] * and/or request plugins be made thread-safe.                   *                                                                                                                                 
[WARNING] * If reporting an issue, report it against the plugin in        *                                                                                                                                 
[WARNING] * question, not against maven-core                              *                                                                                                                                 
[WARNING] *****************************************************************                                                                                                                                 
[WARNING] The following plugins are not marked @threadSafe in test-project:                                                                                                                          
[WARNING] de.dentrassi.maven:rpm:0.9.2                                                                                                                                                                      
[WARNING] Enable debug to see more precisely which goals are not marked @threadSafe.                                                                                                                        
[WARNING] *****************************************************************    
18
Ram Ghadiyaram

Vous pouvez optimiser la construction en utilisant un petit truc comme 2 

  1. Si vous avez écrit Junit Test et que vous ne voulez pas exécuter de scénario de test à chaque fois, vous pouvez utiliser -DskipTests=true
  2. Installer localement Nexus ou les référentiels
  3. Vous pouvez ajuster les configurations de mémoire de manière optimale pour, par exemple: ajouter cette ligne à mvn.bat définir MAVEN_OPTS=-Xmx512m -XX:MaxPermSize=256m 

Pour plus d’informations, vous pouvez vérifier Comment accélérer votre build Maven

3
Subodh Joshi

Si vous utilisez Commandline, vous pouvez vérifier le nombre de cœurs de votre machine et les utiliser. Si vous souhaitez également ignorer vos tests, vous pouvez ajouter -DskipTests Par exemple, j'ai un processeur à 8 cœurs:

mvn -T 8 clean install -DskipTests
3
ccreedon1

Vous pouvez faire un hacky moyen si vous avez un peu plus de RAM comme moi. Et vous n'avez pas besoin de SSD. Parce que c'est sensible pour SSD de faire beaucoup de lecture-écriture. Même si vous désactivez un peu (MacOS - je ne me souviens pas si Win a un problème similaire). Mais

1) Créez un lecteur RAM (le nombre de méthodes dépend de votre système d'exploitation) et montez-le dans le dossier/Users/Username/volatile

2) localisez maven-module-builder-X.X.X.jar dans MVN_HOME/lib

3) dans JAR, modifiez le fichier org/Apache/maven/model/pom-4.0.0.xml en modifiant

<build> <répertoire>/Utilisateurs/Nom d'utilisateur/volatile/$ {project.groupId}/$ {project.artifactId}/$ {project.version}/target

4) A partir de maintenant, toutes les compilations de projets seront effectuées en mémoire. Et c’est une différence même par rapport au SSD.

Oui, son hack et certains plugins Maven peuvent cesser de fonctionner en mode BTW.

2
Vladimir I

Sur mon projet actuel:

1 /mvn clean install [INFO] Durée totale: 01:05 h

2 /mvn clean install -DskipTests [INFO] durée totale: 18:35 min

3 /mvn clean install -Dmaven.test.skip -DskipTests [INFO] durée totale: 10:58 min

4 /mvn -T 1C clean install -Dmaven.test.skip -DskipTests
[INFO] Temps total: 04:00 min

1
mourad m