Als ich eine Spring Boot-Anwendung erstellte, konnte ich Dateien im Stammverzeichnis des Projekts sehen mvnw
und mvnw.cmd
speichern. Was ist der Zweck dieser beiden Dateien?
Als ich eine Spring Boot-Anwendung erstellte, konnte ich Dateien im Stammverzeichnis des Projekts sehen mvnw
und mvnw.cmd
speichern. Was ist der Zweck dieser beiden Dateien?
Antworten:
Diese Dateien stammen aus dem Maven-Wrapper . Es funktioniert ähnlich wie der Gradle-Wrapper .
Auf diese Weise können Sie das Maven-Projekt ausführen, ohne dass Maven installiert und auf dem Pfad vorhanden ist. Es lädt die richtige Maven-Version herunter, wenn sie nicht gefunden wird (soweit ich weiß, standardmäßig in Ihrem Benutzer-Home-Verzeichnis).
Die mvnw
Datei ist für Linux (Bash) und die mvnw.cmd
für die Windows-Umgebung.
Führen Sie den folgenden Befehl aus, um alle erforderlichen Maven Wrapper-Dateien zu erstellen oder zu aktualisieren:
mvn -N io.takari:maven:wrapper
Um eine andere Version von maven zu verwenden, können Sie die Version wie folgt angeben:
mvn -N io.takari:maven:wrapper -Dmaven=3.3.3
Beide Befehle erfordern Maven PATH
(fügen Sie den Pfad zu maven bin
zu Path
auf Systemvariablen) , wenn Sie bereits mvnw in Ihrem Projekt haben Sie verwenden können , ./mvnw
statt mvn
in den Befehlen.
Der Befehl mvnw
verwendet Maven, ~/.m2/wrapper
auf das bei der ersten Verwendung standardmäßig heruntergeladen wird .
Die URL mit Maven wird in jedem Projekt unter folgender Adresse angegeben .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
Rufen Sie zum Aktualisieren oder Ändern der Maven-Version Folgendes auf (beachten Sie dies --non-recursive
bei Projekten mit mehreren Modulen):
./mvnw io.takari:maven:wrapper -Dmaven=3.3.9
oder einfach .mvn/wrapper/maven-wrapper.properties
manuell ändern .
So generieren Sie Wrapper mit Maven von Grund auf neu (Sie müssen ihn bereits PATH
ausführen:
mvn io.takari:maven:wrapper -Dmaven=3.3.9
Der Maven Wrapper ist eine ausgezeichnete Wahl für Projekte, die eine bestimmte Version von Maven benötigen (oder für Benutzer, die Maven überhaupt nicht installieren möchten). Anstatt viele Versionen davon im Betriebssystem zu installieren, können wir einfach das projektspezifische Wrapper-Skript verwenden.
mvnw: Es ist ein ausführbares Unix-Shell-Skript, das anstelle eines vollständig installierten Maven verwendet wird
mvnw.cmd : Es ist für Windows-Umgebung
Anwendungsfälle
Der Wrapper sollte mit verschiedenen Betriebssystemen funktionieren, z.
Danach können wir unsere Ziele für das Unix-System folgendermaßen ausführen:
./mvnw clean install
Und der folgende Befehl für Batch:
./mvnw.cmd clean install
Wenn der angegebene Maven nicht in den Wrapper-Eigenschaften enthalten ist, wird er heruntergeladen und im Ordner $USER_HOME/.m2/wrapper/dists
des Systems installiert.
Maven Wrapper Plugin
Maven Wrapper-Plugin für die automatische Installation in einem einfachen Spring Boot-Projekt.
Zuerst müssen wir in den Hauptordner des Projekts gehen und diesen Befehl ausführen:
mvn -N io.takari:maven:wrapper
Wir können auch die Version von Maven angeben:
mvn -N io.takari:maven:wrapper -Dmaven=3.5.2
Die Option -N bedeutet –nicht rekursiv, sodass der Wrapper nur auf das Hauptprojekt des aktuellen Verzeichnisses angewendet wird, nicht auf Submodule.
Die mit Abstand beste Option wäre heutzutage die Verwendung eines Maven-Containers als Builder-Tool. Ein mvn.sh
solches Skript würde ausreichen:
#!/bin/bash
docker run --rm -ti \
-v $(pwd):/opt/app \
-w /opt/app \
-e TERM=xterm \
-v $HOME/.m2:/root/.m2 \
maven mvn "$@"
mvn
Befehl für die Maven-Operation verwendet, obwohl ich ihn./mvnw
für den gleichen Zweck verwenden konnte.