J'ai un projet maven multi-module. Nous avons l'intention de mettre à jour tous ces modules ensemble. Mais à partir de maintenant, je termine la version codée en dur dans chacun des modules pom.xml comme ci-dessous
<parent>
<artifactId>xyz-application</artifactId>
<groupId>com.xyz</groupId>
<version>2.50.0.g</version>
</parent>
<modelVersion>4.0.0</modelVersion>
<groupId>com.xyz</groupId>
<artifactId>xyz-Library</artifactId>
<version>2.50.0.g</version>
et le module parent principal a la configuration ci-dessous
<modelVersion>4.0.0</modelVersion>
<groupId>com.xyz</groupId>
<artifactId>xyz-application</artifactId>
<version>2.50.0.g</version>
<packaging>pom</packaging>
Réponses:
Utilisation à
versions:set
partir du plugin versions-maven :Il ajustera toutes les versions de pom, les versions parent et les versions de dépendance dans un projet multi-module.
Si vous avez fait une erreur, faites
après, ou
si vous êtes satisfait des résultats.
Remarque: cette solution suppose que tous les modules utilisent également le pom agrégé comme pom parent, un scénario qui était considéré comme standard au moment de cette réponse. Si ce n'est pas le cas, optez pour la réponse de Garret Wilson .
la source
versions:set
celui que vous pouvez spécifier-DgenerateBackupPoms=false
, comme par défaut ce plugin sauvegarde les fichiers pom originaux.versions:commit
: "Supprime la sauvegarde initiale du pom, acceptant ainsi les modifications."La réponse donnée suppose que le projet en question utilise l'héritage de projet en plus de l'agrégation de modules. En fait, ce sont des concepts distincts:
https://maven.apache.org/guides/introduction/introduction-to-the-pom.html#Project_Inheritance_vs_Project_Aggregation
Certains projets peuvent être une agrégation de modules, mais n'ont pas de relation parent-enfant entre l'agrégateur POM et les modules agrégés. (Il peut n'y avoir aucune relation parent-enfant, ou les modules enfants peuvent utiliser un POM distinct en tant que "parent".) Dans ces situations, la réponse donnée ne fonctionnera pas.
Après beaucoup de lecture et d'expérimentation, il s'avère qu'il existe un moyen d'utiliser le plugin Versions Maven pour mettre à jour non seulement l'agrégateur POM mais aussi tous les modules agrégés; c'est l'
processAllModules
option. La commande suivante doit être effectuée dans le répertoire du projet agrégateur:Le plugin Versions Maven ne mettra pas seulement à jour les versions de tous les modules contenus, il mettra également à jour les dépendances inter-modules !!!! C'est une victoire énorme et vous fera gagner beaucoup de temps et éviter toutes sortes de problèmes.
Bien sûr, n'oubliez pas de valider les modifications dans tous les modules, ce que vous pouvez également faire avec le même commutateur:
Vous pouvez décider de supprimer complètement les POMS de sauvegarde et de tout faire en une seule commande:
la source
versions:set
plugin est-DoldVersion='*'
, sur mojohaus.org/versions-maven-plugin/set-mojo.html, elle indique explicitement que cette propriété doit être spécifiée lors du traitement d'un projet d'agrégateur.-DprocessAllModules
réellement? Ça ne marche pas pour moi.Si vous souhaitez automatiser complètement le processus (c'est-à-dire que vous souhaitez incrémenter le numéro de version sans avoir à connaître le numéro de version actuel), vous pouvez le faire:
la source
-DoldVersion='*'
Vous voudrez peut-être examiner la version du plug-in de sortie Maven : objectif de mise à jour des versions . Il mettra à jour la version du parent ainsi que tous les modules en dessous.
Mise à jour: Veuillez noter que ce qui précède est le plugin de publication. Si vous ne publiez pas, vous pouvez utiliser
versions:set
la source
mvn release:update-versions -DautoVersionSubmodules
a bien fonctionné pour moi, même si je ne publie pas :-)Je vous encourage à lire le livre Maven sur les constructions multi-modules (réacteurs).
Je voulais dire en particulier ce qui suit:
devrait être changé en. Ici, faites attention à la version non définie uniquement dans la partie parent, elle est définie.
C'est un meilleur lien .
la source
pom.xml
fichiers, mais je suis d'accord (avec @ ThorbjørnRavnAndersen) que la lecture d'un livre entier pour ces informations est exagérée. : pversions:update-child-modules
sonne comme ce que vous recherchez. Vous pouvez faire des versions: définissez comme mentionné, mais c'est un moyen léger de mettre à jour les numéros de version parent. Pour les modules enfants, je pense que vous devez supprimer les<version>
définitions, car elles hériteront du numéro de version du module parent.la source
La meilleure façon est, puisque vous avez l'intention de regrouper vos modules, vous pouvez spécifier la
<dependencyManagement>
balise dans la plupart externepom.xml
(module parent) directement sous la<project>
balise. Il contrôle la version et le nom du groupe. Dans votre module individuel, il vous suffit de spécifier la<artifactId>
balise dans votrepom.xml
. Il prendra la version du fichier parent.la source
la manière la plus simple est de changer la version de chaque pom.xml en version arbitraire. puis vérifiez cette gestion des dépendances pour utiliser la version correcte du module utilisé dans ce module! par exemple, si vous voulez augmenter le versioning pour un projet de module de remorquage, vous devez faire comme le flot:
dans le module childe:
et dans le module parent:
la source
Pour mettre à jour le pom.xml principal et la version parent sur les sous-modules:
la source