Nous allons modifier un projet Maven et le pipeline GitLab CI/CD associé afin d’utiliser Maven Wrapper
.
Pourquoi utiliser Maven Wrapper
?
Maven Wrapper
est un outil qui permet d’encapsuler complètement l’utilisation de Maven.
Un avantage est de simplifier la vie du développeur qui n’a plus besoin d’installer Maven sur son poste: c’est le wrapper qui gère cela.
Cet outil permet également de fixer la version de Maven pour un projet et donc de s’assurer que tous les développeurs utilise la même version de Maven.
Transformer un projet Maven classique en Maven Wrapper
Le plugin Maven Takari Maven Plugin permet d’installer Maven Wrapper
en précisant la version de Maven à utiliser (3.5.2 ci-dessous):
mvn -N io.takari:maven:wrapper -Dmaven=3.5.2
En lançant cette commande à la racine du projet, les fichiers suivants seront crées et devront être ajoutés au gestionnaire de source:
maven-wrapper.jar
est téléchargé par le script mvnw
et il serait donc inutile de l’ajouter au gestionnaire de sources.
Etant donné qu’il est très léger, 50k, nous avons fait le choix de l’ajouter tout de même.
Désormais, pour compiler le projet il suffit de lancer la commande ./mvnw compile
ou mvnw.cmd compile
sous Windows.
Modification du pipeline GitLab CI/CD
Nous allons modifier un manifeste .gitlab-ci.yml
rudimentaire. Le manifeste ci-dessous utilise Maven pour compiler le projet via le job build
:
|
|
Les modifications à apporter sont:
- L’image Docker définie à la ligne 1 doit être modifiée: une image contenant un JDK suffit
- A la ligne 14, Il faut utiliser la commande
mvnw
à la place de la commandemvn
.
Le résultat:
|
|
Bonus pour les utilisateurs de Windows
Les utilisateurs Windows vont sûrement rencontrer l’erreur suivante:
Command couldn't be executed: fork/exec /tmp/app/mvnw: permission denied
Il faut rendre le fichier mvnw
exécutable. Pour cela, il faut lancer cette commande git git update-index --chmod=+x mvnw
sur son poste et ne pas oublier de “pusher” le tout.
Conclusion
Migrer de Maven à Maven Wrapper
demande peu d’effort et vous évitera de perdre du temps à vérifier l’installation de Maven sur les postes des membres de l’équipe :)
Des liens: