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.
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.
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
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] *****************************************************************
Vous pouvez optimiser la construction en utilisant un petit truc comme 2
-DskipTests=true
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
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
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.
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