Cuando creé una aplicación Spring Boot pude ver mvnw
y mvnw.cmd
archivos en la raíz del proyecto. ¿Cuál es el propósito de estos dos archivos?
Cuando creé una aplicación Spring Boot pude ver mvnw
y mvnw.cmd
archivos en la raíz del proyecto. ¿Cuál es el propósito de estos dos archivos?
Respuestas:
Estos archivos son del contenedor Maven . Funciona de manera similar al envoltorio Gradle .
Esto le permite ejecutar el proyecto Maven sin tener Maven instalado y presente en la ruta. Descarga la versión correcta de Maven si no se encuentra (por lo que sé por defecto en su directorio de inicio de usuario).
El mvnw
archivo es para Linux (bash) y mvnw.cmd
es para el entorno de Windows.
Para crear o actualizar todos los archivos necesarios de Maven Wrapper, ejecute el siguiente comando:
mvn -N io.takari:maven:wrapper
Para usar una versión diferente de maven, puede especificar la versión de la siguiente manera:
mvn -N io.takari:maven:wrapper -Dmaven=3.3.3
Ambos comandos requieren experta en PATH
(añadir la ruta a maven bin
que Path
en las variables del sistema) si ya tiene mvnw en su proyecto puede utilizar ./mvnw
en lugar de mvn
en los comandos.
Command mvnw
usa Maven que se descarga por defecto ~/.m2/wrapper
en el primer uso.
La URL con Maven se especifica en cada proyecto en .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
Para actualizar o cambiar la versión de Maven, invoque lo siguiente (recuerde --non-recursive
para proyectos de varios módulos):
./mvnw io.takari:maven:wrapper -Dmaven=3.3.9
o simplemente modificar .mvn/wrapper/maven-wrapper.properties
manualmente.
Para generar un envoltorio desde cero utilizando Maven (necesita tenerlo ya en PATH
ejecución:
mvn io.takari:maven:wrapper -Dmaven=3.3.9
El Maven Envoltura es una excelente opción para proyectos que necesitan una versión específica de Maven (o para los usuarios que no deseen instalar Maven en absoluto). En lugar de instalar muchas versiones de él en el sistema operativo, podemos usar el script de envoltura específico del proyecto.
mvnw: es un script ejecutable de shell Unix utilizado en lugar de un Maven completamente instalado
mvnw.cmd : es para el entorno de Windows
Casos de uso
El contenedor debería funcionar con diferentes sistemas operativos como:
Después de eso, podemos ejecutar nuestros objetivos de esta manera para el sistema Unix:
./mvnw clean install
Y el siguiente comando para Batch:
./mvnw.cmd clean install
Si no tenemos el Maven especificado en las propiedades del contenedor, se descargará e instalará en la carpeta $USER_HOME/.m2/wrapper/dists
del sistema.
Complemento Maven Wrapper
Complemento Maven Wrapper para realizar la instalación automática en un simple proyecto Spring Boot.
Primero, debemos ir a la carpeta principal del proyecto y ejecutar este comando:
mvn -N io.takari:maven:wrapper
También podemos especificar la versión de Maven:
mvn -N io.takari:maven:wrapper -Dmaven=3.5.2
La opción -N significa –no-recursivo para que el contenedor solo se aplique al proyecto principal del directorio actual, no en ningún submódulo.
Con mucho, la mejor opción hoy en día sería utilizar un contenedor Maven como herramienta de construcción. Un mvn.sh
guión como este sería suficiente:
#!/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 para la operación maven, aunque podría usarlo./mvnw
para el mismo propósito.