¿En qué se diferencian el "paquete mvn clean" y la "instalación mvn clean"?
¿Cuáles son exactamente las diferencias entre mvn clean package
y mvn clean install
? Cuando ejecuto ambos comandos, ambos parecen hacer lo mismo.
Bueno, ambos limpiarán. Eso significa que eliminarán la carpeta de destino. La verdadera pregunta es ¿cuál es la diferencia entre paquete e instalación?
package
compilará su código y también lo empaquetará. Por ejemplo, si su pom dice que el proyecto es un jar, creará un jar para usted cuando lo empaquete y lo coloque en algún lugar del directorio de destino (de forma predeterminada).
install
compilará y empaquetará, pero también colocará el paquete en su repositorio local. Esto hará que otros proyectos puedan consultarlo y obtenerlo de su repositorio local.
Documentación
Lo que hace clean (común en ambos comandos): elimina todos los archivos generados por la compilación anterior.
Al llegar a la diferencia entre el paquete de comandos y la instalación , primero debe comprender el ciclo de vida de un proyecto maven.
Estas son las fases del ciclo de vida predeterminadas en maven
- validar : validar que el proyecto sea correcto y que toda la información necesaria esté disponible
- compilar : compila el código fuente del proyecto.
- prueba : prueba el código fuente compilado utilizando un marco de prueba unitario adecuado. Estas pruebas no deberían requerir que el código esté empaquetado o implementado.
- paquete : tome el código compilado y empaquetelo en su formato distribuible, como un JAR.
- verificar : ejecutar cualquier verificación de los resultados de las pruebas de integración para garantizar que se cumplan los criterios de calidad.
- instalar : instala el paquete en el repositorio local, para usarlo como una dependencia en otros proyectos localmente
- implementar : realizado en el entorno de compilación, copia el paquete final en el repositorio remoto para compartirlo con otros desarrolladores y proyectos.
El funcionamiento de Maven es que, si ejecuta un comando para cualquiera de las fases del ciclo de vida, ejecuta cada fase predeterminada del ciclo de vida en orden, antes de ejecutar el comando en sí.
orden de ejecución
validar >> compilar >> probar (opcional) >> paquete >> verificar >> instalar >> implementar
Entonces, cuando ejecuta el comando mvn package , ejecuta los comandos para todas las fases del ciclo de vida hasta el paquete
validar >> compilar >> probar (opcional) >> paquete
Y en cuanto a mvn install , ejecuta los comandos para todas las fases del ciclo de vida hasta la instalación, que también incluye el paquete.
validar >> compilar >> probar (opcional) >> paquete >> verificar >> instalar
Entonces, efectivamente lo que significa es que los comandos de instalación hacen todo lo que hace el comando del paquete y algo más (instalar el paquete en el repositorio local, para usarlo como una dependencia en otros proyectos localmente).
Fuente: referencia del ciclo de vida de Maven
El paquete generará Jar/war según el archivo POM. install instalará el archivo jar generado en el repositorio local para otras dependencias, si las hay.
La fase de instalación viene después de la fase del paquete.
package
Agregará el paquete jar
o war
a su target
carpeta. Podemos verificarlo cuando vacíemos la carpeta de destino (usando mvn clean
) y luego ejecutemos mvn package
.
install
hará todas las cosas que hace, además , también package
agregará paquetes jar
o en el repositorio local. war
Podemos confirmarlo revisando su .m2
carpeta.