Maven Wrapper

Maven Wrapper es una herramienta que nos permite descargar y ejecutar una versión específica de Maven de manera automatizada, es especialmente útil en desarrollos donde se usa integración continua.

Instalación

Para instalar el plugin, solo debemos ejecutar en la raíz del proyecto (donde el archivo pom.xml se encuentra)

$ mvn -N io.takari:maven:0.7.7:wrapper

El parámetro -N significa -non-recursive (no recursivo), por lo que solo se aplicará al proyecto principal en el directorio actual, y no a ningún submodulo del proyecto.

También podemos indicar la versión específica de Maven.

$ mvn -N io.takari:maven:wrapper -Dmaven=3.5.2

Luego de ejecutar el comando, se crean dos archivos (mvnw y mvnw.cmd) y un directorio oculto (.mvn).

mvnw
mvnw.cmd
.mvn
└── wrapper
    ├── MavenWrapperDownloader.java
    ├── maven-wrapper.jar
    └── maven-wrapper.properties

Uso

En lugar de usar el tradicional comando mvn, usamos mvnw para Linux o mvnw.cmd para el caso de Windows.

# Forma tradicional
$ mvn clean install
# Equivalente en Linux
$ ./mvnw clean install
# Equivalente en Windows
$ mvnw.cmd clean install

La primera vez que se ejecute, el script intentará usar .mvn/wrapper/maven-wrapper.jar para descargar Maven en ./m2/wrapper/dists dentro del directorio raíz del usuario, si no encuentra a maven-wrapper.jar, intentará usar cURL o Wget y como último recurso compilará la clase en .mvn/wrapper/MavenWrapperDownloader.java para realizar la descargar.

Las siguientes veces usará la versión ya descargada de Maven en ./m2/wrapper/dists.

La ruta para descargar Maven la obtiene del archivo .mvn/wrapper/maven-wrapper.properties del atributo distributionUrl.

distributionUrl=https://repo.maven.apache.org/maven2/org/apache/maven/apache-maven/3.6.3/apache-maven-3.6.3-bin.zip
wrapperUrl=https://repo.maven.apache.org/maven2/io/takari/maven-wrapper/0.5.6/maven-wrapper-0.5.6.jar

Documentación