Ir al contenido principal

Las fases del ciclo de vida de maven

Maven es una herramienta para ayudar a gestionar proyectos. Cómo tal se encarga de la construcción del proyecto a partir del código fuente, para convertirlo en un elemento entregable. Dentro de ese proceso de construcción existen diferentes fases que se ejecutan en un determinado orden, y cada una de ellas se encarga de ejecutar una serie de procesos para conseguir determinados objetivos intermedios.

Existen tres procesos de construcción distintos definidos para maven:

  • default: se encarga de construir y desplegar el proyecto.
  • clean: se encarga de borrar todos los ficheros generados por alguna de las fase de maven.
  • site: se encarga de generar la documentación del proyecto, y la estructura en un documento html.

Cada uno de estos tres procesos de construcción ejecuta una determinada serie de pasos (23 en el caso por defecto, 3 para el proceso de limpieza y 4 para el proceso de documentación).

Las principales fases de maven son:

  • validate: se encarga de comprobar si toda la información, y todas las dependencias necesarias para la construcción estan disponibles.
  • compile: realiza la compilación del código fuente.
  • test-compile: realiza la compilación de los casos de prueba.
  • test: ejecuta las clases de pruebas.
  • package: empaquete el código compilado en un paquete distribuible en base al tipo de proyecto (jar, war, ...).
  • integration-test: ejecuta los test de integración con el paquete ya ensamblado.
  • install: copia el paquete en el repositorio local.
  • deploy: copia el paquete en el repositorio remoto.

Existen más fases intermedias, muchas de ellas son simples fases de preparación que se ejecutan antes de las comentadas, o fase de procesado que se ejecutan justo despues de las mismas. Podemos consultar la lista completa de fases accediendo a la documentación oficial de maven.

Las fase siempre se ejecutan en el mismo orden. Como consecuencia cuando indicamos a maven que queremos ejecutar una fase concreta usando el comando: mvn test

Maven ejecutará por orden todas las fases hasta llegar a la fase que hemos especificado.

Goals en maven

Cada fase de maven es una secuencia de "goals" u objetivos. Cada objetivo es el responsable de una tarea concreta. Igual que con las fases, los objetivos dentro de una fase se ejecutan siempre en el mismo orden. No se puede ejecutar un objetivo específico, ya que sólo se pueden indicar fases. El uso que habitualmente obtendremos de los objetivos será indicar en que momento ejecutar determianadas tareas espefícicas del proyecto, y que se definiran como llamadas a plugins especificadas en el descriptor de cada proyecto (el archivo pom.xml).

En la definición de un plugin para un proyecto maven, se indica su groupId, artifactId y versión; exactamente igual que a la hora de indicar una dependencia (de echo los plugins son dependencias por si mismas). Al añadir un plugin a un proyecto:

  • El plugin puede incluir un proceso de ejecución de forma automática dentro de una fase. Por ejemplo el plugin maven-javadoc-plugin se encargará de lanzar la documentación javadoc como parte de la generación de la documentación técnica.
  • El plugin registra una serie de objetivos que se deberán ejecutan explicitamente. Por ejemplo, si registramos el pluign de sonar, podemos ejecutarlo llamadao a mvn sonar:sonar. Dicho goal está registrado en la fase de post-test, y se encargará de subir a sonar el resultado de los tests.
  • En el descriptor podemos adjuntar un objetivo a una fase. De esta forma podríamos coger el plugin anterior de sonar, e indicar que queremos que el objetivo sonar:sonar se ejecute de manera automática durante la la fase de post-test. De esta forma, siempre que con maven ejecutemos una fase que incluya la fase de test, automáticamente se subirá el informe a sonar.

Comentarios