En el post previo Introducción a Maven, se habló sobre una de las build tools más conocidas en la actualidad. En esta oportunidad, hablaremos sobre como estandarizar maven y hacer nuestro proyecto portable.

Hoy en día, uno de los problemas con los que se tiene que lidiar frecuentemente es la estandarización de las herramientas que usamos durante el desarrollo y no solo estamos hablando de hacer las coordinaciones con el equipo sino también la configuración del servidor de Integración Continua.

Qué hace maven-wrapper exactamente?

  • Verifica que se cuente con maven-wrapper localmente

  • De no ser encontrada la versión específica de maven-wrapper, procederá a descargarlo

Iniciando con maven-wrapper

Si queremos usar maven-wrapper, lo único que tenemos que hacer es ejecutar la siguiente línea de comando.

mvn -N io.takari:maven:wrapper

Como se puede ver a continuación, para indicar una versión específica se agrega el parámetro maven.

mvn -N io.takari:maven:wrapper -Dmaven=3.3.9

Luego de haber ejecutado las líneas anteriores veremos un cambio en la estructura original de nuestro proyecto:

.
├── .mvn
│   └── wrapper
│       ├── maven-wrapper.jar
│       └── maven-wrapper.properties
├── mvnw
├── mvnw.cmd
├── pom.xml
└── src
    ├── main
    │   └── java
    │       └── me
    │           └── eddumelendez
    │               └── demo
    │                   └── App.java
    └── test
        └── java
            └── me
                └── eddumelendez
                    └── demo
                        └── AppTest.java

Como se puede apreciar en la figura anterior, nuevos archivos se han creado en el proyecto dentro de la carpeta .mvn o scripts para ejecutar en las diferentes plataformas como mvnw para UNIX o mvnw.cmd para WINDOWS.

A partir de ahora, la forma de ejecutar las tareas en maven serían de la siguiente manera:

./mvnw clean package

De esta manera, cuando un nuevo miembro del equipo se descargue el proyecto y ejecute su primer comando con maven-wrapper, también estará instalando la versión específica con la que todos los miembros del equipo lo hacen.


Eddú Meléndez

Java Software Engineer, Open Source Contributor