shaunthomas999
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?
Esquivar
Estos archivos son de Envoltorio experto. Funciona de manera similar a la 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 (que yo sepa, por defecto en el directorio de inicio de su usuario).
El mvnw
El archivo es para Linux (bash) y el mvnw.cmd
es para el entorno de Windows.
Para crear o actualizar todos los archivos Maven Wrapper necesarios, 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 maven en PATH
(agregue la ruta a maven bin
a Path
en Variables del sistema) si ya tiene mvnw en su proyecto, puede usar ./mvnw
en lugar de mvn
en los comandos.
-
Gracias por la respuesta. ¿Puedes explicar cuándo se genera esto, como cuando creas inicialmente un proyecto? ¿Se actualizará a lo largo de la línea cuando realice cambios en su pom como agregar, eliminar dependencias/complementos?
– Asanke
20/09/2017 a las 23:20
-
y, ¿debería agregar/confirmar los archivos mvnw.cmd?
– jpganz18
15 de enero de 2019 a las 3:26
-
sí, claro. le permite ejecutar rápidamente su compilación maven sin la necesidad de instalar maven adicional o tenerlo en PATH.
– Esquivar
15 de enero de 2019 a las 19:04
-
Muchas gracias por la respuesta, es muy útil. ¿Podría decirnos algo sobre la portabilidad de los archivos de configuración de maven cuando trabajamos de esa manera? Saludos y gracias de nuevo.
–Daniel Hernandez
13 de septiembre de 2019 a las 4:49
-
@DanielHernández, el contenedor maven usa la configuración predeterminada.xml en el sistema de los usuarios. y de acuerdo a esto asunto hay algunos trucos sobre cómo podría agregar una configuración personalizada.xml al repositorio, pero parece que ignora la configuración del usuario en el sistema.
– Esquivar
13 de septiembre de 2019 a las 6:30
michal kordas
Dominio mvnw
utiliza Maven que se descarga de forma predeterminada en ~/.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 sobre --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
a mano.
Para generar un contenedor desde cero usando Maven (debe tenerlo ya en PATH
correr:
mvn io.takari:maven:wrapper -Dmaven=3.3.9
Romil Patel
El Envoltorio experto es una excelente opción para proyectos que necesitan una versión específica de Maven (o para usuarios que no desean instalar Maven). En lugar de instalar muchas versiones en el sistema operativo, podemos usar el script contenedor específico del proyecto.
mvnw: es un script de shell de Unix ejecutable que se usa en lugar de un Maven completamente instalado
mvnw.cmd: es para el entorno de Windows
Casos de uso
El contenedor debe funcionar con diferentes sistemas operativos, tales como:
- linux
- OSX
- ventanas
- Solaris
Después de eso, podemos ejecutar nuestros objetivos así 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 de envoltura de Maven
Complemento de envoltura de Maven para realizar la instalación automática en un proyecto Spring Boot simple.
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, por lo que el contenedor solo se aplicará al proyecto principal del directorio actual, no a ningún submódulo.
Fuente 1 (lectura adicional): https://www.baeldung.com/maven-wrapper
-
Tal vez debería mencionar que parte del texto está extraído de baeldung.com/maven-wrapper
– PhoneixS
15 de septiembre de 2020 a las 11:20
respuesta corta: para ejecutar Maven y Gradle en la terminal sin seguir los procesos de instalación manual.
ejemplo gradle:
./gradlew clean build
./gradlew bootRun
ejemplo experto:
./mvnw clean install
./mvnw spring-boot:run
“El La forma recomendada de ejecutar cualquier compilación de Gradle es con la ayuda de Gradle Wrapper (en resumen, simplemente “Envoltura”). El Wrapper es un script que invoca una versión declarada de Gradle, descargándola previamente si es necesario. Como resultado, los desarrolladores pueden ponerse en marcha con un proyecto de Gradle rápidamente sin tener que seguir los procesos de instalación manual. ahorrando tiempo y dinero a su empresa.“
Gradle también agregaría algunos archivos específicos correspondientes a los archivos de Maven Gradlew y Gradle.bat
Lova Chittumuri
En el sistema operativo Windows, mvnw clean install
se utiliza para la actividad maven clean and install, y mvnw spring-boot:run
se utiliza para ejecutar la aplicación de arranque Spring desde el símbolo del sistema.
Por ejemplo:
C:\SamplesSpringBoot\demo>mvnw clean install
C:\SamplesSpringBoot\demo>mvnw spring-boot:run
André
Con mucho, la mejor opción hoy en día sería usar un contenedor maven como herramienta de construcción. A mvn.sh
script 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 "$@"