web-dev-qa-db-fra.com

Meilleures pratiques de versionnage Maven

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

Actuellement, je fais ce qui suit:

  • récupérer la version actuelle (très probablement avec SNAPSHOT) à partir de pom.xml
  • incrémenter la version (mvn -DnewVersion=<something> versions:set), en respectant les règles décrites dans la question version d'artefact Maven pour les patchs
  • mvn:install à envoyer au dépôt
  • renommer la version en ajoutant à nouveau SNAPSHOT postfix.
  • validation des modifications (à l'aide d'un système de contrôle de version)

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

61
shabunc

Vous devez utiliser maven-release-plugin pour libérer vos artefacts. Ensuite, automatiquement toutes vos versions seront incrémentées par le plugin de publication. L'exception peut ê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 d'un INSTANTANÉ à une version finale, vous devez utiliser le plugin de sortie maven, vous pouvez libérer un artefact simplement en utilisant:

Premier pas:

mvn release:prepare 

La dernière étape:

mvn release:perform

Si vous souhaitez accepter les valeurs par défaut, vous pouvez simplement ajouter -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é à partir d'une solution CI.

L'utilisation de mvn install est uniquement destinée à 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 requise pour utiliser le plugin de publication est de configurer la zone scm dans votre pom (j'espère que vous utilisez un contrôle de version?).

71
khmarbaise

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

Dans ce cas, j'ai versions modifiées-maven-plugin pour pouvoir incrémenter la version et également ajouter/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 un contrôle total sur chaque étape.

Par exemple, mrp valide la version modifiée avant il essaie réellement de le construire. Si la construction échoue, vous devez annuler ce commit ou, dans le cas de SVN, vous devez faire un autre revert-commit.

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.

5
Petr Újezdský