Resumen¶
- Fase → Representa un paso lógico dentro del ciclo de vida.
- Goal → Es una tarea específica asociada a una fase.
- Plugin → Conjunto de goals que pueden ejecutarse en diferentes fases.
Fases, Goals y Plugins¶
Maven es una herramienta de construcción de proyectos Java basada en la ejecución de un ciclo de vida predefinido, compuesto por fases. Cada fase puede contener varias goals, que son las tareas específicas a ejecutar. Estas goals pertenecen a plugins, que encapsulan la funcionalidad adicional de Maven.
1. Ciclos de vida en Maven¶
Maven tiene tres ciclos de vida principales, cada uno compuesto por varias fases:
-
Default Lifecycle (Ciclo de vida por defecto)
- Compuesto por 23 fases que van desde la validación del proyecto hasta su despliegue.
- Incluye fases importantes como
compile,test,package,install,deploy. -
Clean Lifecycle
-
Formado por 3 fases (
pre-clean,clean,post-clean). - Se encarga de eliminar archivos generados en construcciones anteriores.
-
Site Lifecycle
-
Formado por 4 fases (
pre-site,site,post-site,deploy-site). - Se usa para generar documentación del proyecto.
2. Fases en Maven¶
Las fases en Maven son niveles lógicos en el ciclo de vida de construcción. No ejecutan acciones directamente, sino que ejecutan las goals asociadas a ellas.
Ejemplos de fases en el Default Lifecycle:
compile: Compila el código fuente.test: Ejecuta las pruebas unitarias usando JUnit o TestNG.package: Empaqueta el proyecto en un JAR o WAR.install: Instala el artefacto en el repositorio local (~/.m2/repository).deploy: Copia el artefacto en un repositorio remoto.
🔹 Ejemplo de ejecución de fases:
Si ejecutas:
mvn package
Se ejecutarán todas las fases anteriores en orden hasta package.
3. Goals en Maven¶
Las goals son tareas concretas ejecutadas dentro de una fase. Cada fase puede tener varias goals asociadas.
Por ejemplo:
- La fase
compileejecuta la goalcompiler:compile. - La fase
testejecuta la goalsurefire:test.
Ejecución directa de una goal:
mvn compiler:compile
Esto ejecutará solo esa goal sin importar en qué fase del ciclo de vida se encuentre el proyecto.
El nombre de una goal SIEMPRE va precedida del nombre del plugin separado por ":".
4. Plugins en Maven¶
Los plugins son conjuntos de goals que se pueden ejecutar en diferentes fases del ciclo de vida.
Algunos ejemplos comunes:
🔹 Plugin maven-compiler-plugin¶
Usado para compilar el código fuente.
<plugin>
<groupId>org.apache.maven.plugins</groupId>
<artifactId>maven-compiler-plugin</artifactId>
<version>3.8.1</version>
<configuration>
<source>11</source>
<target>11</target>
</configuration>
</plugin>
Este plugin tiene goals como:
compiler:compile→ Se ejecuta en la fasecompile.compiler:testCompile→ Se ejecuta en la fasetest-compile.
🔹 Plugin maven-surefire-plugin¶
Usado para ejecutar pruebas unitarias.
<plugin>
<groupId>org.apache.maven.plugins</groupId>
<artifactId>maven-surefire-plugin</artifactId>
<version>3.5.2</version>
</plugin>
Este plugin ejecuta la goal surefire:test en la fase test.
🔹 Plugin maven-jar-plugin¶
Usado para empaquetar el código en un JAR.
<plugin>
<groupId>org.apache.maven.plugins</groupId>
<artifactId>maven-jar-plugin</artifactId>
<version>3.2.0</version>
</plugin>
Se ejecuta en la fase package.
5. Cómo modificar o agregar Plugins y Goals¶
Si queremos asociar una goal a una fase específica, la agregamos en la sección <executions> del pom.xml:
<plugin>
<groupId>org.apache.maven.plugins</groupId>
<artifactId>maven-compiler-plugin</artifactId>
<version>3.8.1</version>
<executions>
<execution>
<id>custom-compile</id>
<phase>compile</phase>
<goals>
<goal>compile</goal>
</goals>
</execution>
</executions>
</plugin>
6. Ejecución en IntelliJ¶
En IntelliJ, puedes ejecutar las fases y goals desde la Maven Tool Window, donde puedes:
- Ver todos los plugins instalados.
- Ejecutar directamente una fase o una goal específica.
- Configurar Run Configurations para automatizar builds.