¿Cuál es la diferencia entre mvn clean install
y mvn install
?
clean
es su propia fase del ciclo de vida de la construcción (que puede ser pensada como una acción o tarea) en Maven. El comando mvn clean install
le dice a Maven que haga la fase clean
en cada módulo antes de ejecutar la fase install
para cada módulo.
Lo que esto hace es limpiar cualquier archivo compilado que tenga, asegurándose de que realmente está compilando cada módulo desde cero.
Maven permite especificar objetivos o fases del ciclo de vida en la línea de comandos (o ambos).
clean
y install
son dos fases diferentes del ciclo de vida, a las que se vinculan diferentes ejecuciones de plugins (ya sea por defecto o explícitamente en tu pom.xml)
La fase clean
, por convención, está destinada a hacer que una construcción sea reproducible, es decir, limpia cualquier cosa que haya sido creada por construcciones anteriores. En la mayoría de los casos lo hace llamando a clean:clean
, que borra el directorio vinculado a ${project.build.directory}
(normalmente llamado "target")
Puedes llamar a más de un objetivo target con maven. mvn clean install
llama primero a clean
y luego a install
. Tienes que limpiar manualmente, porque clean no es un objetivo estándar target y no se ejecuta automáticamente en cada instalación.
clean
elimina la carpeta de destino - borra todos los archivos de clase, los docs de java, los jars, los informes y demás. Si no clean
, entonces maven sólo "hará lo que hay que hacer", como no compilará las clases cuando los archivos de origen correspondientes no han cambiado (en resumen).
Lo llamamos target en ant y goal en maven