Skip to main content

Tareas Predefinidas en Maven

⏱ Dedicación recomendada: 0 minutos
Esto considera el contenido visible y relevante, e ignora texto colapsado o marcado como opcional.


Al igual que Gradle, Maven ofrece un conjunto de fases del ciclo de vida predefinidas que facilitan la automatización de tareas comunes como la compilación, empaquetado, y ejecución de pruebas. Mientras que Gradle se destaca por su flexibilidad, permitiendo la definición de tareas mediante scripts en Groovy o Kotlin, Maven sigue un enfoque más estructurado basado en XML a través del archivo pom.xml. Esto lo hace más rígido en algunos aspectos, pero facilita su uso con convenciones claras.

Fases Principales del Ciclo de Vida en Maven

Maven organiza su ciclo de vida en varias fases predefinidas, entre las cuales las más utilizadas son:

clean

La fase clean en Maven elimina los archivos generados por compilaciones anteriores, similar a la tarea clean en Gradle.

mvn clean

Al ejecutar esta fase, se eliminarán directorios como target/ y otros archivos temporales que se hayan generado.

compile

La fase compile compila el código fuente del proyecto, generando los archivos de clase en el directorio target/.

mvn compile

Esta fase deja los artefactos compilados en target/classes, listos para ser empaquetados o ejecutados.

test

La fase test ejecuta las pruebas unitarias utilizando frameworks como JUnit o TestNG. Se puede personalizar mediante el uso de plugins en el archivo pom.xml.

mvn test

Maven ejecutará todas las pruebas unitarias definidas, mostrando los resultados en la consola.

package

La fase package empaqueta el código compilado en un archivo distribuible como un JAR o WAR, listo para ser distribuido o implementado.

mvn package

El archivo empaquetado se ubicará en el directorio target/ después de la ejecución.

verify

La fase verify asegura que el proyecto cumple con ciertos criterios de calidad y validez antes de ser empaquetado o implementado.

mvn verify

Esta fase ejecuta pruebas de verificación adicionales, asegurando la integridad del proyecto.

Configuración de Tareas Predefinidas en Maven

Si bien Maven es menos flexible que Gradle en la definición de tareas personalizadas, permite ajustar tareas predefinidas mediante el uso de plugins. Un ejemplo común es la personalización de la fase test utilizando el plugin maven-surefire-plugin.

pom.xml
<build>
<plugins>
<plugin>
<groupId>org.apache.maven.plugins</groupId>
<artifactId>maven-surefire-plugin</artifactId>
<version>3.0.0-M5</version>
<configuration>
<includes>
<include>**/*Test.java</include>
</includes>
<testFailureIgnore>false</testFailureIgnore>
<forkCount>1</forkCount>
<reuseForks>true</reuseForks>
<reportFormat>brief</reportFormat>
</configuration>
</plugin>
</plugins>
</build>
Explicación del Código

En este ejemplo de configuración de Maven, se está ajustando la fase de pruebas mediante el maven-surefire-plugin, que es el encargado de ejecutar las pruebas unitarias en proyectos Java. Aquí se explican algunos de los elementos clave del código:

  • [8-10] includes: Define qué archivos de prueba se deben ejecutar. En este caso, se están incluyendo todos los archivos que terminen en *Test.java, lo que sigue las convenciones comunes de nombres de archivos de prueba en Java.
  • [11] testFailureIgnore: Controla si Maven debe continuar ejecutando tareas incluso si fallan las pruebas. Si está en false, el proceso se detiene al primer fallo; si está en true, Maven continuará con las siguientes fases a pesar de los errores en las pruebas.
  • [12] forkCount: Define cuántos procesos paralelos se utilizarán para ejecutar las pruebas. En este caso, solo se utilizará un proceso (forkCount=1).
  • [13] reuseForks: Indica si se deben reutilizar los procesos paralelos entre diferentes ejecuciones de pruebas. Aquí, está configurado como true para mejorar el rendimiento en proyectos grandes reutilizando los procesos creados.
  • [14] reportFormat: Especifica el formato del informe de resultados de las pruebas. En este caso, está configurado como brief, lo que proporciona un resumen conciso de los resultados.

Comparación con Gradle

CaracterísticaMavenGradle
Lenguaje de configuraciónXML (pom.xml)Groovy/Kotlin DSL
Tareas predefinidasFases de ciclo de vida (e.g., clean, package)Tareas predefinidas (e.g., clean, build)
FlexibilidadLimitada, basado en convencionesAlta, permite definición flexible de tareas
ExtensibilidadExtensible mediante plugins (XML)Extensible mediante scripts y plugins (DSL)
Velocidad de configuraciónMenos flexible, más rigurosoMás rápido para configuraciones personalizadas

Bibliografías Recomendadas