Quando ho creato un'applicazione Spring Boot ho potuto vedere mvnw
e mvnw.cmd
file nella radice del progetto. Qual è lo scopo di questi due file?
Quando ho creato un'applicazione Spring Boot ho potuto vedere mvnw
e mvnw.cmd
file nella radice del progetto. Qual è lo scopo di questi due file?
Risposte:
Questi file provengono dal wrapper Maven . Funziona in modo simile al wrapper Gradle .
Ciò consente di eseguire il progetto Maven senza che Maven sia installato e presente sul percorso. Scarica la versione Maven corretta se non viene trovata (per quanto ne so per impostazione predefinita nella directory home dell'utente).
Il mvnw
file è per Linux (bash) e mvnw.cmd
per l'ambiente Windows.
Per creare o aggiornare tutti i file Maven Wrapper necessari, eseguire il comando seguente:
mvn -N io.takari:maven:wrapper
Per utilizzare una versione diversa di Maven è possibile specificare la versione come segue:
mvn -N io.takari:maven:wrapper -Dmaven=3.3.3
Entrambi i comandi richiedono maven su PATH
(aggiungi il percorso a maven bin
su Path
su Variabili di sistema) se hai già mvnw nel tuo progetto che puoi usare ./mvnw
invece che mvn
nei comandi.
Il comando mvnw
utilizza Maven che viene scaricato per impostazione predefinita al ~/.m2/wrapper
primo utilizzo.
L'URL con Maven è specificato in ciascun progetto su .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
Per aggiornare o modificare la versione di Maven invocare quanto segue (ricordare --non-recursive
per i progetti multi-modulo):
./mvnw io.takari:maven:wrapper -Dmaven=3.3.9
o semplicemente modificare .mvn/wrapper/maven-wrapper.properties
manualmente.
Per generare un wrapper da zero utilizzando Maven (devi averlo già in PATH
esecuzione:
mvn io.takari:maven:wrapper -Dmaven=3.3.9
Il Maven Wrapper è una scelta eccellente per i progetti che hanno bisogno di una specifica versione di Maven (o per gli utenti che non vogliono installare Maven a tutti). Invece di installarne molte versioni nel sistema operativo, possiamo semplicemente usare lo script wrapper specifico del progetto.
mvnw: è uno script di shell Unix eseguibile usato al posto di un Maven completamente installato
mvnw.cmd : è per ambiente Windows
Casi d'uso
Il wrapper dovrebbe funzionare con diversi sistemi operativi come:
Successivamente, possiamo raggiungere i nostri obiettivi in questo modo per il sistema Unix:
./mvnw clean install
E il seguente comando per Batch:
./mvnw.cmd clean install
Se non abbiamo il Maven specificato nelle proprietà del wrapper, verrà scaricato e installato nella cartella $USER_HOME/.m2/wrapper/dists
del sistema.
Plug-in Maven Wrapper
Plug- in Maven Wrapper per effettuare l'installazione automatica in un semplice progetto Spring Boot.
Innanzitutto, dobbiamo andare nella cartella principale del progetto ed eseguire questo comando:
mvn -N io.takari:maven:wrapper
Possiamo anche specificare la versione di Maven:
mvn -N io.takari:maven:wrapper -Dmaven=3.5.2
L'opzione -N significa –non-ricorsivo in modo che il wrapper verrà applicato solo al progetto principale della directory corrente, non in alcun sottomodulo.
Di gran lunga la migliore opzione al giorno d'oggi sarebbe usare un contenitore Maven come strumento di costruzione. Una mvn.sh
sceneggiatura come questa sarebbe sufficiente:
#!/bin/bash
docker run --rm -ti \
-v $(pwd):/opt/app \
-w /opt/app \
-e TERM=xterm \
-v $HOME/.m2:/root/.m2 \
maven mvn "$@"
mvn
comando per l'operazione maven ma potevo usare./mvnw
per lo stesso scopo.