PROJET AUTOBLOG


Planet-Libre

source: Planet-Libre

⇐ retour index

Marthym : Maven Release Plugin

vendredi 6 avril 2018 à 02:00

Carrément, deux billets dans la même semaine, c’est rare. Bon rien de foufou, j’ai passé un peu de temps la semaine passé à automatiser le processus de release dans ma boite. J’avais déjà essayé d’utiliser le Maven Release Plugin mais j’ai jamais eu de succés.

Cette fois j’ai quand même été un peu plus loin alors j’écris trois mots sur le sujet, en français, si ça intéresse des gens.

Introduction

L’idée est de pouvoir versionner un composant sans autre intervention humaine que le choix des numéros de version (release et next snapshot).

Le POM.xml

Configuration des plugin

Déjà la première chose est de configurer les différents plugins de release.


  org.apache.maven.plugins
  maven-release-plugin
  2.5.3


  org.codehaus.mojo
  versions-maven-plugin
  2.5


  org.apache.maven.plugins
  maven-javadoc-plugin
  3.0.0
  
    true
  
 

Maven Release Plugin

Le Maven Release Plugin est le plugin qui va faire le gros du travail, Mettre à jour le pom avec les bons numéros de version, faire les commit et poser les tags.

Versions Maven Plugin

Le Versions Maven Plugin va permettre de mettre à jour les dépendances SNAPSHOT avant la release.

Maven Javadoc Plugin

Le Maven Javadoc Plugin C’est le plugin chargé de générer la JavaDoc, il est utilisé par le Maven Release Plugin. Dans mon cas, la Javadoc est pas super valide. Pour éviter de faire planter la release, on désactive la JavaDoc.

Source Code Management

J’ai mis un peu de temps à trouver la configuration qui va bien pour que ça fonctionne.


    scm:git:git://github.com/Marthym/hello-osgi-world.git
    scm:git:git@github.com:Marthym/hello-osgi-world.git
    https://github.com/Marthym/hello-osgi-world

Fichier properties & choix des versions

Pour pouvoir fonctionner en mode silencieux, l’étape de préparation de la release a besoin d’un fichier de configuration, à placer à la racine du projet, contenant les numéros de versions des artefacts du projet, pour la release et pour la prochaine SNAPSHOT.

Le fichier a cette forme :

scm.tag=1.5.0
project.rel.fr.ght1pc9kc\\:hello-osgi-world=1.5.0
project.dev.fr.ght1pc9kc\\:hello-osgi-world=1.6.0-SNAPSHOT
scm.commentPrefix=rel(main):

On peut aussi lui préciser le préfixe de commit, par défaut [maven-release-plugin], perso, j’aime bien l’AngularJS Commit Convention, rel(main):.

Les commandes

Résolutions de dépendences SNAPSHOT

mvn versions:use-releases -DprocessParent=true -DfailIfNotReplaced=true

Le principe du plugin consiste en la suppression des chaînes -SNAPSHOT dans le fichier mais le plugin vérifie quand même que la version existe bien et ait bien été releasé. Si ce n’est pas le cas, il plante.

Deux paramètres :

Release

mvn release:prepare -DtagNameFormat="@{version}" release:perform

En fait le plugin agit en deux étapes qui peuvent être exécuté en une ligne.

Attention, il est nécessaire de push les modifs

git push && git push --tags

Maven Release Plugin écrit à l'origine par Marthym pour J’ai acheté un PC neuf cassé ... le April 06, 2018.

Gravatar de Marthym
Original post of Marthym.Votez pour ce billet sur Planet Libre.