Welchen Zweck haben die Dateien mvnw und mvnw.cmd?

Lesezeit: 4 Minuten

Benutzeravatar von shunthomas999
saunthomas999

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?

Benutzeravatar von Dodge
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

Benutzeravatar von Michal Kordas
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 

Benutzeravatar von Romil Patel
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

Initialisierer

Benutzeravatar von Lova Chittumuri
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

Benutzeravatar von André
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 "$@"

1445120cookie-checkWelchen Zweck haben die Dateien mvnw und mvnw.cmd?

This website is using cookies to improve the user-friendliness. You agree by using the website further.

Privacy policy