Metas y fases de Maven

1. Información general

En este tutorial, exploraremos diferentes ciclos de vida de compilación de Maven y sus fases.

También discutiremos la relación central entre Objetivos y Fases.

2. Ciclo de vida de compilación de Maven

La compilación de Maven sigue un ciclo de vida específico para implementar y distribuir el proyecto de destino.

Hay tres ciclos de vida integrados:

  • predeterminado: el ciclo de vida principal ya que es responsable de la implementación del proyecto
  • clean: para limpiar el proyecto y eliminar todos los archivos generados por la compilación anterior
  • sitio: para crear la documentación del sitio del proyecto

Cada ciclo de vida consta de una secuencia de fases. El ciclo de vida de compilación predeterminado consta de 23 fases, ya que es el ciclo de vida de compilación principal.

Por otro lado, el ciclo de vida limpio consta de 3 fases, mientras que el ciclo de vida del sitio se compone de 4 fases.

3. Fase de Maven

Una fase de Maven representa una etapa en el ciclo de vida de la compilación de Maven . Cada fase es responsable de una tarea específica.

Estas son algunas de las fases más importantes del ciclo de vida de la compilación predeterminado :

  • validar: comprobar si toda la información necesaria para la construcción está disponible
  • compilar: compila el código fuente
  • prueba-compilación: compila el código fuente de prueba
  • prueba: ejecuta pruebas unitarias
  • paquete: paquete de código fuente compilado en el formato distribuible (jar, war,…)
  • prueba de integración: procese e implemente el paquete si es necesario para ejecutar pruebas de integración
  • instalar: instala el paquete en un repositorio local
  • implementar: copia el paquete en el repositorio remoto

Para obtener la lista completa de las fases de cada ciclo de vida, consulte la Referencia de Maven.

Las fases se ejecutan en un orden específico. Esto significa que si ejecutamos una fase específica usando el comando:

mvn 

Esto no solo ejecutará la fase especificada, sino también todas las fases anteriores.

Por ejemplo, si ejecutamos la fase de implementación , que es la última fase del ciclo de vida de compilación predeterminado , también se ejecutarán todas las fases antes de la fase de implementación , que es el ciclo de vida predeterminado completo :

mvn deploy

4. Objetivo de Maven

Cada fase es una secuencia de objetivos y cada objetivo es responsable de una tarea específica.

Cuando ejecutamos una fase, todos los objetivos vinculados a esta fase se ejecutan en orden.

Estas son algunas de las fases y los objetivos predeterminados vinculados a ellas:

  • compilador: compilación - la compilación objetivo desde el compilador plugin está ligado a la compilación fase
  • compilador: testCompile está vinculado a la fase de compilación de prueba
  • infalible: la prueba está destinada a la fase de prueba
  • instalar: la instalación está vinculada a la fase de instalación
  • jar: jar y war: war está vinculado a la fase de paquete

Podemos enumerar todos los objetivos vinculados a una fase específica y sus complementos usando el comando:

mvn help:describe -Dcmd=PHASENAME

Por ejemplo, para enumerar todos los objetivos vinculados a la fase de compilación , podemos ejecutar:

mvn help:describe -Dcmd=compile

Y obtenga la salida de muestra:

compile' is a phase corresponding to this plugin: org.apache.maven.plugins:maven-compiler-plugin:3.1:compile

Lo cual, como se mencionó anteriormente, significa que la compilación objetivo del compilador plugin está ligado a la compilación de fase.

5. Complemento Maven

Un complemento de Maven es un grupo de objetivos. Sin embargo, estos objetivos no están necesariamente vinculados a la misma fase.

Por ejemplo, aquí hay una configuración simple del complemento Maven Failsafe que es responsable de ejecutar las pruebas de integración:

   maven-failsafe-plugin ${maven.failsafe.version}    integration-test verify      

Como podemos ver, el complemento Failsafe tiene dos objetivos principales configurados aquí:

  • prueba de integración : ejecutar pruebas de integración
  • verificar : verificar todas las pruebas de integración pasadas

We can use the following command to list all goals in a specific plugin:

mvn :help

For example, to list all goals in the Failsafe plugin:

mvn failsafe:help

And the output of this will be:

This plugin has 3 goals: failsafe:help Display help information on maven-failsafe-plugin. Call mvn failsafe:help -Ddetail=true -Dgoal= to display parameter details. failsafe:integration-test Run integration tests using Surefire. failsafe:verify Verify integration tests ran using Surefire.

To run a specific goal, without executing its entire phase (and the preceding phases) we can use the command:

mvn :

For example, to run integration-test goal from Failsafe plugin, we need to run:

mvn failsafe:integration-test

6. Building a Maven Project

To build a Maven project, we need to execute one of the life cycles by running one of their phases:

mvn deploy

This will execute the entire default lifecycle. Alternatively, we can stop at the install phase:

mvn install

But usually we'll use the command:

mvn clean install

Para limpiar el proyecto primero, ejecutando el ciclo de vida limpio , antes de la nueva compilación.

También podemos ejecutar solo un objetivo específico del complemento:

mvn compiler:compile

Tenga en cuenta que si intentamos construir un proyecto Maven sin especificar una fase o un objetivo, eso causará el error:

[ERROR] No goals have been specified for this build. You must specify a valid lifecycle phase or a goal

7. Conclusión

En este artículo, discutimos los ciclos de vida de compilación de Maven, así como la relación entre las fases y los objetivos de Maven.