218 votes

Quel est le but des fichiers mvnw et mvnw.cmd?

Lorsque j'ai créé une application Spring Boot, j'ai pu voir les fichiers mvnw et mvnw.cmd à la racine du projet. Quel est le but de ces deux fichiers ?

302voto

Dodge Points 4284

Ces fichiers sont issus de Maven wrapper. Il fonctionne de manière similaire au Gradle wrapper.

Cela vous permet d'exécuter le projet Maven sans avoir Maven installé et présent dans le chemin d'accès. Il télécharge la version Maven correcte s'il n'est pas trouvée (si je ne me trompe pas, par défaut dans le répertoire de votre utilisateur).

Le fichier mvnw est pour Linux (bash) et le fichier mvnw.cmd est pour l'environnement Windows.


Pour créer ou mettre à jour tous les fichiers nécessaires de Maven Wrapper, 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 le PATH, si vous avez déjà le mvnw dans votre projet, vous pouvez utiliser ./mvnw à la place de mvn dans les commandes.

26voto

Michal Kordas Points 4767

La commande mvnw utilise Maven qui est téléchargé par défaut dans ~/.m2/wrapper lors du premier usage.

L'URL avec Maven est spécifiée dans chaque projet à .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 changer la version de Maven, invoquez ce qui suit (n'oubliez pas --non-recursive pour les projets multi-modules):

./mvnw io.takari:maven:wrapper -Dmaven=3.3.9 

ou modifiez simplement .mvn/wrapper/maven-wrapper.properties manuellement.

Pour générer un wrapper à partir de zéro en utilisant Maven (vous devez déjà l'avoir dans votre PATH exécutez:

mvn io.takari:maven:wrapper -Dmaven=3.3.9

3voto

André Points 39

De loin, la meilleure option de nos jours serait d'utiliser un conteneur Maven comme outil de construction. Un script mvn.sh comme celui-ci serait suffisant :

#!/bin/bash
docker run --rm -ti \
 -v $(pwd):/opt/app \
 -w /opt/app \
 -e TERM=xterm \
 -v $HOME/.m2:/root/.m2 \
 maven mvn "$@"

Prograide.com

Prograide est une communauté de développeurs qui cherche à élargir la connaissance de la programmation au-delà de l'anglais.
Pour cela nous avons les plus grands doutes résolus en français et vous pouvez aussi poser vos propres questions ou résoudre celles des autres.

Powered by:

X