Lorsque j'ai créé une application Spring Boot, je pouvais voir les fichiers mvnw
et mvnw.cmd
à la racine du projet. Quel est le but de ces deux fichiers?
Ces fichiers proviennent de wrapper Maven . Cela fonctionne de la même manière que wrapper Gradle .
Cela vous permet d'exécuter le projet Maven sans que Maven soit installé et présent sur le chemin. Il télécharge la version correcte de Maven si elle n’est pas trouvée (pour autant que je sache par défaut dans votre répertoire d’accueil utilisateur).
Le fichier mvnw
est destiné à Linux (bash) et le mvnw.cmd
à l'environnement Windows.
Pour créer ou mettre à jour tous les fichiers Maven Wrapper nécessaires, exécutez la commande suivante:
mvn -N io.takari:maven:wrapper
Pour utiliser une version différente de maven, vous pouvez spécifier la version comme suit:
mvn -N io.takari:maven:wrapper -Dmaven=3.3.3
Les deux commandes nécessitent maven sur PATH
(ajoutez le chemin d'accès à maven bin
à Path
sur les variables système) si vous avez déjà mvnw dans votre projet, vous pouvez utiliser ./mvnw
au lieu de mvn
dans les commandes.
La commande mvnw
utilise Maven qui est téléchargé par défaut sur ~/.m2/wrapper
lors de la première utilisation.
L'URL avec Maven est spécifié dans chaque projet sous .mvn/wrapper/maven-wrapper.properties
:
distributionUrl=https://repo1.maven.org/maven2/org/Apache/maven/Apache-maven/3.3.9/Apache-maven-3.3.9-bin.Zip
Pour mettre à jour ou modifier la version de Maven, appelez ce qui suit (rappelez-vous de --non-recursive
pour les projets multi-modules):
./mvnw io.takari:maven:wrapper -Dmaven=3.3.9
ou simplement modifier .mvn/wrapper/maven-wrapper.properties
manuellement.
Pour générer un wrapper à partir de zéro avec Maven (vous devez déjà l'avoir dans PATH
run:
mvn io.takari:maven:wrapper -Dmaven=3.3.9
De loin, la meilleure option à l’heure actuelle serait d’utiliser un conteneur Maven comme outil de construction. Un script mvn.sh
comme celui-ci suffirait:
#!/bin/bash
docker run --rm -ti \
-v $(pwd):/opt/app \
-w /opt/app \
-e TERM=xterm \
-v $HOME/.m2:/root/.m2 \
maven mvn "$@"