Kiedy utworzyłem aplikację Spring Boot, mogłem zobaczyć mvnw
i mvnw.cmd
pliki w katalogu głównym projektu. Jaki jest cel tych dwóch plików?
Kiedy utworzyłem aplikację Spring Boot, mogłem zobaczyć mvnw
i mvnw.cmd
pliki w katalogu głównym projektu. Jaki jest cel tych dwóch plików?
Odpowiedzi:
Te pliki pochodzą z opakowania Maven . Działa podobnie do owijarki Gradle .
Umożliwia to uruchomienie projektu Maven bez konieczności instalacji i obecności Maven na ścieżce. Pobiera poprawną wersję Maven, jeśli nie została znaleziona (o ile domyślnie wiem w katalogu osobistym użytkownika).
mvnw
Plik jest dla Linux (bash) i mvnw.cmd
jest dla środowiska Windows.
Aby utworzyć lub zaktualizować wszystkie niezbędne pliki Maven Wrapper, wykonaj następujące polecenie:
mvn -N io.takari:maven:wrapper
Aby użyć innej wersji maven, możesz określić wersję w następujący sposób:
mvn -N io.takari:maven:wrapper -Dmaven=3.3.3
Oba polecenia wymagają włączenia maven PATH
(dodaj ścieżkę do maven bin
do Path
Zmiennych systemowych), jeśli masz już mvnw w swoim projekcie, którego możesz użyć ./mvnw
zamiast mvn
poleceń.
Polecenie mvnw
używa Maven, który jest domyślnie pobierany ~/.m2/wrapper
przy pierwszym użyciu.
Adres URL z Maven jest określony w każdym projekcie na .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
Aby zaktualizować lub zmienić wersję Maven, wywołaj następujące (pamiętaj o --non-recursive
projektach wielomodułowych):
./mvnw io.takari:maven:wrapper -Dmaven=3.3.9
lub po prostu zmodyfikuj .mvn/wrapper/maven-wrapper.properties
ręcznie.
Aby wygenerować opakowanie od zera za pomocą Maven (musisz mieć to już PATH
uruchomione:
mvn io.takari:maven:wrapper -Dmaven=3.3.9
Maven Wrapper jest doskonałym wyborem dla projektów, które wymagają specyficznej wersji Maven (lub dla użytkowników, którzy nie chcą się zainstalować Maven w ogóle). Zamiast instalować wiele jego wersji w systemie operacyjnym, możemy po prostu użyć skryptu opakowania specyficznego dla projektu.
mvnw: jest wykonywalnym skryptem powłoki Uniksa używanym zamiast w pełni zainstalowanego Maven
mvnw.cmd : dotyczy środowiska Windows
Przypadków użycia
Opakowanie powinno współpracować z różnymi systemami operacyjnymi, takimi jak:
Następnie możemy uruchomić nasze cele w następujący sposób dla systemu Unix:
./mvnw clean install
Oraz następujące polecenie dla partii:
./mvnw.cmd clean install
Jeśli nie mamy określonego Maven we właściwościach opakowania, zostanie on pobrany i zainstalowany w folderze $USER_HOME/.m2/wrapper/dists
systemu.
Wtyczka Maven Wrapper
Wtyczka Maven Wrapper do automatycznej instalacji w prostym projekcie Spring Boot.
Najpierw musimy przejść do głównego folderu projektu i uruchomić następującą komendę:
mvn -N io.takari:maven:wrapper
Możemy również określić wersję Maven:
mvn -N io.takari:maven:wrapper -Dmaven=3.5.2
Opcja -N oznacza –nierekurencyjny, dzięki czemu opakowanie zostanie zastosowane tylko do głównego projektu bieżącego katalogu, a nie do żadnych podmodułów.
Zdecydowanie najlepszą opcją byłoby użycie kontenera maven jako narzędzia do budowania. Wystarczy mvn.sh
taki skrypt:
#!/bin/bash
docker run --rm -ti \
-v $(pwd):/opt/app \
-w /opt/app \
-e TERM=xterm \
-v $HOME/.m2:/root/.m2 \
maven mvn "$@"
mvn
polecenia dla Maven operacji chociaż mogę użyć./mvnw
do tego samego celu.