Meilleures pratiques de gestion des versions de Maven

Quelle est la meilleure façon de changer la version du projet Maven, de publier cette version et de revenir ensuite au développement *-SNAPSHOT .

Actuellement je suis en train de suivre:

  • récupérer la version actuelle (probablement avec SNAPSHOT ) à partir de pom.xml
  • increment version ( mvn -DnewVersion= versions:set ), en respectant les règles décrites dans la question Version artefact Maven pour les patchs
  • mvn:install pour envoyer à repo
  • renommer la version en ajoutant à nouveau SNAPSHOT postfix.
  • commettre des modifications (en utilisant un système de contrôle de version)

J’ai un fort sentiment que je fais quelque chose de mal et / ou d’inefficace.

Vous devez utiliser le plugin maven-release-plugin pour libérer vos artefacts. Que automatiquement toutes vos versions seront incrémentées par le plug-in release. L’exception pourrait être si vous passez de 1.0.3-SNAPSHOT à 1.1.0-SNAPSHOT. Le calendrier de développement avec Maven est le suivant:

 1.0.0-SNAPSHOT 1.0.0 1.0.1-SNAPSHOT 1.0.1 1.0.2-SNAPSHOT 1.0.2 .. 

Pour passer à l’étape allant d’une version SNAPSHOT à une version finale, vous devez utiliser le plugin Maven Release pour libérer un artefact en utilisant simplement:

Premier pas:

 mvn release:prepare 

La dernière étape:

 mvn release:perform 

Si vous souhaitez accepter les valeurs par défaut, vous pouvez simplement append -B comme:

 mvn -B release:prepare 

ou vous pouvez combiner ces étapes en une seule:

 mvn -B release:prepare release:perform 

Ce qui précède peut également être utilisé dans une solution CI.

Utiliser mvn install est uniquement destiné à installer les artefacts dans votre référentiel local. Si vous travaillez avec un vrai comme un gestionnaire de référentiel (que je peux recommander), vous devez utiliser:

 mvn deploy 

Une condition pour utiliser le plug-in Release est de configurer la zone scm dans votre pom (j’espère que vous utilisez un contrôle de version?).

Si vous voulez plus de contrôle sur la phase de publication, le maven-release-plugin (mrp) ne vous aidera pas beaucoup.

Dans ce cas, j’ai modifié versions-maven-plugin pour pouvoir incrémenter la version et pour append / supprimer le suffixe SNAPSHOT .

Grâce à ces nouvelles fonctionnalités, vous pouvez écrire des scripts qui font la même chose que mrp, mais vous avez le contrôle total de chaque étape.

Par exemple, mrp valide la version modifiée avant d’ essayer de la construire. Si la construction échoue, vous devez annuler cette validation ou, dans le cas de SVN, vous devez effectuer une nouvelle validation de validation.

Remarque: je ne suis pas l’auteur original de la fonction d’incrémentation. Je l’ai adopté depuis autoincrement-versions-maven-plugin, comme indiqué sur la page github.