Als ich eine Spring Boot-Anwendung erstellte, konnte ich sehen mvnw
Und mvnw.cmd
Dateien im Stammverzeichnis des Projekts. Welchen Zweck haben diese beiden Dateien?
Welchen Zweck haben die Dateien mvnw und mvnw.cmd?
saunthomas999
Ausweichen
Diese Dateien stammen von Maven-Wrapper. Es funktioniert ähnlich wie die Gradle-Wrapper.
Auf diese Weise können Sie das Maven-Projekt ausführen, ohne dass Maven installiert und im 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).
Der mvnw
Datei ist für Linux (bash) und die mvnw.cmd
ist 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 on PATH
(Fügen Sie den Pfad zu maven bin
Zu Path
auf Systemvariablen), wenn Sie bereits mvnw in Ihrem Projekt haben, können Sie es verwenden ./mvnw
anstatt mvn
in den Befehlen.
-
Danke für die Antwort. Können Sie erklären, wann dies generiert wird, wie wenn Sie zum ersten Mal ein Projekt erstellen? Wird es fortlaufend aktualisiert, wenn Sie Änderungen an Ihrem Pom vornehmen, z. B. Abhängigkeiten/Plugins hinzufügen, entfernen?
– Asanke
20. September 2017 um 23:20 Uhr
-
und sollten Sie die mvnw.cmd-Dateien hinzufügen/commiten?
– jpganz18
15. Januar 2019 um 3:26 Uhr
-
Ja, natürlich. Es ermöglicht Ihnen, Ihren Maven-Build schnell auszuführen, ohne dass Sie Maven extra installieren oder auf PATH haben müssen.
– Ausweichen
15. Januar 2019 um 19:04 Uhr
-
Vielen Dank für die Antwort, sie ist sehr hilfreich. Können Sie uns etwas über die Portabilität der Maven-Einstellungsdateien sagen, wenn wir auf diese Weise arbeiten? Saludos und nochmals vielen Dank.
– Daniel Hernández
13. September 2019 um 4:49 Uhr
-
@DanielHernández Der Maven-Wrapper verwendet die Standardeinstellung settings.xml auf dem System des Benutzers. und danach Ausgabe Es gibt einige Tricks, wie Sie dem Repo eine benutzerdefinierte settings.xml hinzufügen können, aber es scheint, dass es dann die Benutzereinstellungen auf dem System ignoriert.
– Ausweichen
13. September 2019 um 6:30 Uhr
Michal Kordas
Befehl mvnw
verwendet Maven, das standardmäßig heruntergeladen wird ~/.m2/wrapper
bei der ersten Benutzung.
URL mit Maven wird in jedem Projekt unter 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
Um die Maven-Version zu aktualisieren oder zu ändern, rufen Sie Folgendes auf (denken Sie an about --non-recursive
für Projekte mit mehreren Modulen):
./mvnw io.takari:maven:wrapper -Dmaven=3.3.9
oder einfach modifizieren .mvn/wrapper/maven-wrapper.properties
manuell.
Um einen Wrapper mit Maven von Grund auf neu zu generieren (muss bereits in PATH
laufen:
mvn io.takari:maven:wrapper -Dmaven=3.3.9
Romil Patel
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 die Windows-Umgebung
Anwendungsfälle
Der Wrapper sollte mit verschiedenen Betriebssystemen funktionieren, wie zum Beispiel:
- Linux
- OSX
- Fenster
- Solaris
Danach können wir unsere Ziele für das Unix-System wie folgt ausführen:
./mvnw clean install
Und der folgende Befehl für Batch:
./mvnw.cmd clean install
Wenn wir den angegebenen Maven nicht in den Wrapper-Eigenschaften haben, wird er heruntergeladen und im Ordner installiert $USER_HOME/.m2/wrapper/dists
vom System.
Maven Wrapper-Plugin
Maven Wrapper-Plugin um die automatische Installation in einem einfachen Spring Boot-Projekt durchzuführen.
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 irgendwelche Untermodule.
Quelle 1 (weiterführende Literatur): https://www.baeldung.com/maven-wrapper
-
Vielleicht sollten Sie erwähnen, dass ein Teil des Textes extrahiert wurde baeldung.com/maven-wrapper
– PhoneixS
15. September 2020 um 11:20 Uhr
kurze Antwort: um Maven und Gradle im Terminal auszuführen, ohne die manuellen Installationsprozesse zu befolgen.
Gradle-Beispiel:
./gradlew clean build
./gradlew bootRun
Maven-Beispiel:
./mvnw clean install
./mvnw spring-boot:run
“Der Die empfohlene Methode zum Ausführen eines Gradle-Builds ist die Verwendung des Gradle-Wrappers (kurz nur „Wrapper“). Der Wrapper ist ein Skript, das eine deklarierte Version von Gradle aufruft und sie bei Bedarf vorher herunterlädt. Infolgedessen können Entwickler schnell mit einem Gradle-Projekt loslegen, ohne manuelle Installationsprozesse befolgen zu müssen spart Ihrem Unternehmen Zeit und Geld.“
Gradle würde auch einige spezifische Dateien hinzufügen, die den Maven-Dateien entsprechen Gradlew Und Gradle.bat
Lova Chittumuri
Im Windows-Betriebssystem mvnw clean install
wird für die Säuberungs- und Installationsaktivität von Maven verwendet, und mvnw spring-boot:run
wird verwendet, um die Spring Boot-Anwendung über die Eingabeaufforderung auszuführen.
Zum Beispiel:
C:\SamplesSpringBoot\demo>mvnw clean install
C:\SamplesSpringBoot\demo>mvnw spring-boot:run
André
Die mit Abstand beste Option wäre heutzutage die Verwendung eines Maven-Containers als Builder-Tool. A mvn.sh
Skript wie dieses 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 "[email protected]"