Lorsque j'ai créé une application Spring Boot, je pouvais voir mvnw
et les mvnw.cmd
fichiers à la racine du projet. Quel est le but de ces deux fichiers?
Lorsque j'ai créé une application Spring Boot, je pouvais voir mvnw
et les mvnw.cmd
fichiers à la racine du projet. Quel est le but de ces deux fichiers?
Réponses:
Ces fichiers proviennent du wrapper Maven . Il fonctionne de manière similaire à l' emballage 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 bonne version de Maven si elle n'est pas trouvée (pour autant que je sache par défaut dans votre répertoire personnel).
Le mvnw
fichier est pour Linux (bash) et l' mvnw.cmd
est pour l'environnement Windows.
Pour créer ou mettre à jour tous les fichiers Wrapper Maven 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 on PATH
(ajoutez le chemin d'accès à maven bin
to Path
sur les variables système) si vous avez déjà mvnw dans votre projet, vous pouvez utiliser ./mvnw
plutôt que mvn
dans les commandes.
La commande mvnw
utilise Maven qui est par défaut téléchargé sur~/.m2/wrapper
lors de la première utilisation.
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, appelez les éléments suivants (rappelez-vous --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 à l'aide de Maven (vous devez l'avoir déjà en cours d' PATH
exécution:
mvn io.takari:maven:wrapper -Dmaven=3.3.9
Le Maven Wrapper est un excellent choix pour les projets qui ont besoin d'une version spécifique de Maven (ou pour les utilisateurs qui ne veulent pas installer Maven du tout). Au lieu d'en installer de nombreuses versions dans le système d'exploitation, nous pouvons simplement utiliser le script d'encapsulation spécifique au projet.
mvnw: c'est un script shell Unix exécutable utilisé à la place d'un Maven entièrement installé
mvnw.cmd : c'est pour l'environnement Windows
Cas d'utilisation
L'encapsuleur doit fonctionner avec différents systèmes d'exploitation tels que:
Après cela, nous pouvons exécuter nos objectifs comme ceci pour le système Unix:
./mvnw clean install
Et la commande suivante pour Batch:
./mvnw.cmd clean install
Si nous n'avons pas le Maven spécifié dans les propriétés du wrapper, il sera téléchargé et installé dans le dossier $USER_HOME/.m2/wrapper/dists
du système.
Plugin Maven Wrapper
Plugin Maven Wrapper pour effectuer l'installation automatique dans un simple projet Spring Boot.
Tout d'abord, nous devons aller dans le dossier principal du projet et exécuter cette commande:
mvn -N io.takari:maven:wrapper
On peut également spécifier la version de Maven:
mvn -N io.takari:maven:wrapper -Dmaven=3.5.2
L'option -N signifie –non récursif de sorte que l'encapsuleur ne sera appliqué qu'au projet principal du répertoire courant, pas dans aucun sous-module.
De loin, la meilleure option de nos jours serait d'utiliser un conteneur Maven comme outil de création. Un mvn.sh
script 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 "$@"
mvn
commande pour le fonctionnement de maven même si je pouvais l'utiliser./mvnw
dans le même but.