Dans Maven, Pourquoi courir «mvn clean»?

Je me demande quelle est la différence majeure entre la mvn comstack mvn clean comstack et la mvn comstack mvn clean comstack , en pratique.

Je comprends la différence réelle, c’est que la mvn clean comstack supprime tous les fichiers générés et recommence à zéro, mais pourquoi voudrions-nous faire cela? Je peux supposer que mvn comstack va régénérer les fichiers si nécessaire, non?

Une chose que j’ai remarquée dans mon projet était que si vous supprimiez un fichier source sans le clean , le fichier compilé rest, ce qui ne poserait normalement pas de problème, mais je suppose.

Certains plugins nécessitent un clean pour fonctionner correctement. Par exemple (au moins dans Maven 2), le maven-war-plugin explose chaque WAR dépendant dans une arborescence de répertoires existante. Cela nécessite un clean pour se débarrasser des fichiers supprimés des fichiers WAR dépendants.

Un autre problème est que lorsque vous renommez une classe, l’ancienne version compilée peut restr dans l’arbre de construction et sera incluse dans les fichiers JAR, etc. jusqu’à ce que vous mvn clean .

Je peux supposer que “mvn comstack” va régénérer les fichiers si nécessaire, non?

Pour les plugins traditionnels, c’est une hypothèse juste. Cependant, si vous utilisez un plug-in pour générer des composants de code source, j’examinerai attentivement la documentation et l’emplacement du code source généré. Par exemple, il existe deux plug-ins non pris en charge dont le but est de piloter le générateur de code EMF d’Eclipse.

Par exemple: Si vous renommez une classe, la version précédente compilée restra dans target/classes jusqu’à ce que vous exécutiez clean . Cela peut être complètement inoffensif, mais cela peut causer des problèmes si elle est détectée automatiquement par une parsing de classes et autres.

sur Maven, chaque fois que vous voulez comstackr, sa meilleure pratique pour exécuter “mvn clean”. il efface les classes existantes que vous avez compilées à partir de la dernière compilation. Si vous ne voulez pas exécuter 3 lignes, faites simplement “mvn test” après “mvn clean”. vous n’avez pas toujours besoin de “comstackr mvn”.

Si vous ne faites pas de compilation, cela signifie que vous autorisez toujours le travail avec des classes obsolètes. Si votre module suppose de migrer vers une nouvelle classe, même si vous l’avez manqué, il n’y aura aucune erreur de compilation en raison de l’ancienne classe existant dans la cible / les classes. Cela restra inaperçu jusqu’à ce que le même module soit construit à un autre endroit / machine avec un objective de compilation propre.