¿En qué se diferencia "mvn clean install" de "mvn install"?

Respuestas:

214

cleanes su propia fase de ciclo de vida de construcción (que puede considerarse como una acción o tarea) en Maven. mvn clean installle dice a Maven que haga la cleanfase en cada módulo antes de ejecutar la installfase para cada módulo.

Lo que esto hace es borrar cualquier archivo compilado que tenga, asegurándose de que realmente esté compilando cada módulo desde cero.

Powerlord
fuente
13
Siempre pensé en instalar, incluyendo limpiar como una de sus fases ... hasta que veo esto
Junchen Liu
14
@shanyangqu Lamentablemente, no. cleanestá en un ciclo de vida separado , por lo que no se llama por defecto.
Powerlord
47

Maven le permite especificar objetivos o fases del ciclo de vida en la línea de comando (o ambos).

cleany installson dos fases diferentes del ciclo de vida , a las que se vinculan diferentes ejecuciones de complementos (ya sea de forma predeterminada o explícitamente en su pom.xml )

La cleanfase, por convención, está destinada a hacer que una compilación sea reproducible, es decir, limpia todo lo creado por compilaciones anteriores. En la mayoría de los casos, lo hace llamando clean:clean, lo que elimina el directorio vinculado a ${project.build.directory}(generalmente llamado "destino")

Sean Patrick Floyd
fuente
66
"instalar" no es un ciclo de vida. Es una fase en el ciclo de vida predeterminado. Aunque hay un ciclo de vida "limpio", AFAIK este parámetro especifica la fase "limpia" en el ciclo de vida "limpio", no el ciclo de vida "limpio" en sí.
Puce
1
@Puce cierto, quise decir "Fase", no ciclo de vida
Sean Patrick Floyd
38

Puedes llamar a más de un objetivo con maven. mvn clean installllama cleanprimero, luego install. Debe limpiar manualmente, porque la limpieza no es un objetivo objetivo estándar y no se ejecuta automáticamente en cada instalación.

cleanelimina la carpeta de destino: elimina todos los archivos de clase, los documentos de Java, los frascos, los informes, etc. Si noclean , entonces Maven solo "hará lo que se debe hacer", como si no compilara clases cuando los archivos fuente correspondientes no hayan cambiado (en resumen).

lo llamamos objetivo en hormiga y objetivo en maven

Andreas Dolk
fuente
1
Creo que, en este contexto, limpiar e instalar son fases del ciclo de vida, no objetivos.
JL_SO
4

Lo mismo ocurre con @Andreas_D, además si dice actualizar Spring de una versión a otra en su proyecto sin hacer una limpieza, terminará con ambos en su artefacto. Me encontré mucho con esto al desarrollar Flex con Maven.

mezmo
fuente