5 - Ciclo de vida de Maven

Objetivo del tema

En este tema comprenderás cómo Apache Maven organiza tareas en ciclos de vida, qué fases componen el flujo principal, cuáles son los plugins asociados por defecto y cómo ejecutar fases específicas incluyendo los ciclos de limpieza y generación de sitios.

5.1 Fases principales

Maven define tres ciclos de vida principales: default, clean y site. El ciclo default cubre la construcción del artefacto y está compuesto por fases encadenadas. Invocar una fase ejecuta implícitamente todas las anteriores.

Fase Propósito
validate Verifica que el proyecto esté correcto y que existan los recursos necesarios.
compile Compila el código fuente en src/main/java.
test Ejecuta pruebas definidas en src/test/java.
package Empaqueta el resultado (JAR, WAR, etc.) según la configuración del POM.
verify Ejecuta verificaciones adicionales (por ejemplo, integración o chequeos de calidad).
install Instala el artefacto en el repositorio local ~/.m2/repository.
deploy Publica el artefacto en un repositorio remoto para usuarios finales.

Comprender estas fases ayuda a elegir la invocación correcta según la acción deseada y evita tareas innecesarias.

5.2 Plugins asociados a cada fase

Maven ejecuta plugins predefinidos en cada fase; este comportamiento se conoce como mapeo de objetivo a fase. El listado oficial puede consultarse en la documentación del ciclo de vida.

  • maven-compiler-plugin ejecuta el objetivo compile durante la fase compile.
  • maven-surefire-plugin ejecuta pruebas unitarias en la fase test.
  • maven-jar-plugin maneja el empaquetado de JARs en la fase package.
  • maven-install-plugin instala artefactos en la fase install.
  • maven-deploy-plugin publica artefactos durante la fase deploy.

Si necesitas alterar el flujo (por ejemplo, reemplazar Surefire por maven-failsafe-plugin), configúralo dentro de <build> para cambiar el objetivo enlazado a la fase.

5.3 Ejecutar fases específicas

Puedes ejecutar una fase concreta utilizando la sintaxis mvn <fase>. Maven resolverá todas las fases previas del mismo ciclo.

mvn package
mvn verify
mvn deploy
  • mvn package compila, prueba y empaqueta el artefacto.
  • mvn verify agrega verificaciones adicionales antes de instalar o desplegar.
  • mvn deploy ejecuta todo el ciclo, incluyendo la publicación en repositorios remotos.

Para objetivos aislados (como limpiar dependencias o generar reportes) puedes invocar directamente un objetivo de plugin: mvn dependency:purge-local-repository, mvn surefire:test, etc.

5.4 El ciclo de vida de limpieza

El ciclo clean elimina artefactos generados en compilaciones previas. Incluye las fases pre-clean, clean y post-clean, generalmente manejadas por maven-clean-plugin.

mvn clean
  • Al ejecutarlo se borra la carpeta target, garantizando compilaciones limpias.
  • Es habitual combinarlo con otras fases en el mismo comando: mvn clean package.
  • Plugins personalizados pueden engancharse en pre-clean o post-clean para tareas adicionales, como notificaciones o validaciones.

Ejecutar mvn clean antes de distribuciones o pruebas críticas evita usar artefactos obsoletos.

5.5 El ciclo de vida de construcción de sitio

El ciclo site genera documentación del proyecto en formato HTML, incluyendo informes de dependencias, tests y configuración. La fase principal, site, está asociada al maven-site-plugin.

mvn site
mvn site:deploy
  • mvn site crea el sitio en target/site utilizando reportes habilitados.
  • mvn site:deploy publica dichos reportes en un servidor definido en el POM.
  • Puedes personalizar plantillas y menús mediante un archivo site.xml y el directorio src/site.

Generar sitios de forma periódica facilita la revisión de calidad, cobertura y dependencias por parte de todo el equipo.

Resumen didáctico

El ciclo de vida de Maven organiza la construcción en fases coherentes, respaldadas por plugins que automatizan tareas como compilar, probar, empaquetar y publicar. Comprender cómo ejecutar fases específicas y aprovechar los ciclos clean y site permite crear pipelines reproducibles y documentar el estado del proyecto continuamente.