Ciclo de vida por defecto en Maven (lifecycle) | el holgazán

viernes 3 de agosto de 2007

Ciclo de vida por defecto en Maven (lifecycle)

El ciclo de vida está formado por una secuencia de fases de forma que, para que se ejecute una fase, Maven ejecuta antes todas las fases previas.
Esta es la secuencia de fases del ciclo de vida por defecto (de costrucción, build) :

  • validate - valida que el proyecto sea correcto y que toda la información necesaria esté disponible.
  • generate-sources - genera el código fuente necesario a incluir en la compilación.
  • process-sources - procesa el código fuente, por ejemplo para filtrar valores.
  • generate-resources - genera los recursos a incluir en el paquete.
  • process-resources - copia y procesa los recursos en el directorio de destino, preparados para su empaquetado.
  • compile - compila el código fuente del proyecto.
  • process-classes - post-procesamiento de los ficheros generados de la compilación, por ejemplo para hacer mejora de bytecodes en las clases Java.
  • generate-test-sources - genera el código fuente de las clases de prueba necesarias.
  • process-test-sources - procesa el código fuente de las clases de prueba, por ejemplo para filtrar valores.
  • generate-test-resources - crea recursos para las pruebas.
  • process-test-resources - copia y procesa los recursos en el directorio de destino de las pruebas.
  • test-compile - compila las clases de prueba en el directorio de destino.
  • test - ejecuta las pruebas usando el framework adecuado. Estas prebas no deben requerir que el código esté empaquetado y desplegado.
  • prepare-package - realiza las operaciones necesarias para preparar el paquete antes del empaquetado propiamente dicho.
  • package - toma el código compilado y lo empaqueta en su formato a distribuir, como puede ser un JAR.
  • pre-integration-test - realiza las acciones requeridas antes de ejecutar las pruebas de integración, como puede ser la configuración del entorno necesario.
  • integration-test - procesa y despliega el paquete, si es necesario, en el entorno donde se van a ejecutar las pruebas de integración.
  • post-integration-test - realiza las acciones requeridas, después de que las pruebas de integración se hayan ejecutado, como puede ser la limpieza del entorno.
  • verify - ejecuta los chequeos necesarios para verificar que el paquete cumple los criterios de calidad.
  • install - instala el paquete en el repositorio local, para su uso como dependencias de otros proyectos locales.
  • deploy - copia el paquete final al repositorio remoto, a compartir con otros desarrolladores y proyectos.
Otro ciclo de vida estándar es el de limplieza (clean), con las siguientes fases:
  • pre-clean
  • clean
  • post-clean
Y otro es el de creación del sitio (site) de documentación e informes sobre el proyecto:
  • pre-site
  • site - genera el sitio y los reports
  • post-site
  • site-deploy - despliega el sitio en un servidor remoto

Los objetivos (goals) concretos que estén unidos a cada fase dependen, por defecto, del tipo de empaquetamiento del proyecto. Por ejemplo:

jar

Es el tipo de empaquetamiento por defecto y el más común.
  • process-resources - resources:resources
  • compile - compiler:compile
  • process-test-resources - resources:testResources
  • test-compile - compiler:testCompile
  • test - surefire:test
  • package - jar:jar
  • install - install:install
  • deploy - deploy:deploy
pom
Es el tipo de empaquetamiento más simple. El artefacto generado es él mismo.
  • package - site:attach-descriptor
  • install - install:install
  • deploy - deploy:deploy
war
Es un tipo similar al jar, con la diferencia del objetivo (goal) war:war. Nótese que este plugin requiere un fichero web.xml de configuración de aplicación web.
  • process-resources - resources:resources
  • compile - compiler:compile
  • process-test-resources - resources:testResources
  • test-compile - compiler:testCompile
  • test - surefire:test
  • package - war:war
  • install - install:install
  • deploy - deploy:deploy
ear
Consiste en el despliegue de un fichero descriptor (application.xml), algunos recursos y algunos módulos.
El plugin ear ofrece la posibilidad de ejecutar el objetivo (goal) ear:generate-applicationxml, para generar el descriptor si se desea.
  • generate-resources - ear:generate-application-xml
  • process-resources - resources:resources
  • package - ear:ear
  • install - install:install
  • deploy - deploy:deploy

Por último, comentar que estas son las formas de manipular el ciclo de vida de construcción:
  • En función del tipo de empaquetado, se utilizará su ciclo de vida por defecto.
  • Uniendo un objetivo (goal) a una fase, manualmente en el POM.
  • Uniendo un objetivo (goal) a una fase por defecto, en la definición del Mojo. Los Mojos son objetos planos Java (POJOs, Plain Old Java Objects) pero para Maven. Un Mojo es un objeto que implementa un objetivo (goal) que puede ser ejecutado.
  • Creando un ciclo de vida bifurcado y ejecutándolo en un Mojo.
  • Creando un nuevo tipo de empaquetado, sobrescribiendo su ciclo de vida por defecto.
Ver los plugins disponiles: http://maven.apache.org/plugins.

1 comentarios

Anónimo dijo...

pura adrenalina