6 - Plugins de Maven

Objetivo del tema

En este tema conocerás qué son los plugins en Apache Maven, cómo se integran en el ciclo de vida, cuáles son los plugins esenciales, cómo configurarlos en pom.xml y qué herramientas puedes sumar para pruebas, documentación y reportes.

6.1 ¿Qué son los plugins en Maven?

Un plugin es una extensión que aporta objetivos (goals) ejecutables dentro de las fases del ciclo de vida. Maven se apoya en ellos para compilar, probar, empaquetar y desplegar proyectos. Puedes consultar el catálogo oficial en la documentación de plugins.

  • Cada plugin define uno o más objetivos que pueden ligarse a fases específicas o ejecutarse de forma directa.
  • Existe un set de plugins por defecto que ya están enlazados a las fases principales; solo debes configurarlos cuando necesitas personalizar comportamiento.
  • Los plugins se empaquetan como artefactos Maven, por lo que se resuelven desde repositorios igual que cualquier dependencia.

6.2 Plugins más utilizados

Algunos plugins vienen preconfigurados y cubren tareas habituales en la construcción de aplicaciones Java.

  • maven-compiler-plugin: controla la compilación del código fuente y permite fijar la versión de Java.
  • maven-surefire-plugin: ejecuta pruebas unitarias durante la fase test.
  • maven-jar-plugin: genera archivos JAR a partir de las clases compiladas.
  • maven-resources-plugin: copia recursos a la carpeta de salida respetando codificaciones.
  • maven-deploy-plugin: publica artefactos en repositorios remotos durante la fase deploy.

Conocer sus configuraciones y parámetros te permite adaptar el ciclo de vida a necesidades concretas sin reinventar procesos.

6.3 Configuración de plugins en pom.xml

Los plugins se configuran en la sección <build> del POM. Puedes alterar parámetros, versiones o incluso cambiar el objetivo asociado a una fase.

<build>
  <plugins>
    <plugin>
      <groupId>org.apache.maven.plugins</groupId>
      <artifactId>maven-compiler-plugin</artifactId>
      <version>3.13.0</version>
      <configuration>
        <source>17</source>
        <target>17</target>
        <encoding>UTF-8</encoding>
      </configuration>
    </plugin>
    <plugin>
      <groupId>org.apache.maven.plugins</groupId>
      <artifactId>maven-surefire-plugin</artifactId>
      <version>3.2.5</version>
      <configuration>
        <includes>
          <include>**/*Test.java</include>
        </includes>
      </configuration>
    </plugin>
  </plugins>
</build>
  • Especificar una versión concreta evita sorpresas cuando Maven actualiza sus valores por defecto.
  • La sección <executions> permite agregar o modificar objetivos asociados a fases específicas.
  • Para proyectos multi-módulo, centraliza la configuración en el POM padre y herédala en los módulos hijos.

6.4 Plugins para testing

Además de Surefire, existen plugins que amplían las posibilidades de pruebas unitarias, integración y cobertura.

  • maven-failsafe-plugin: orientado a pruebas de integración; se ejecuta en las fases integration-test y verify.
  • jacoco-maven-plugin: genera reportes de cobertura basados en JaCoCo.
  • Configura los motores de prueba (por ejemplo, JUnit) y librerías de mocks (como Mockito) como dependencias del alcance test para que los plugins los detecten.

Definir perfiles específicos para pruebas de integración o performance ayuda a separar sus ejecuciones del ciclo habitual de desarrollo.

6.5 Plugins para generar documentación y reportes

Maven ofrece plugins orientados a producir documentación, reportes de calidad y sitios navegables.

  • maven-site-plugin: genera el sitio del proyecto a partir de reportes registrados.
  • maven-javadoc-plugin: crea la documentación Javadoc para librerías.
  • maven-project-info-reports-plugin: agrega reportes de dependencias, licencias y configuración al sitio.
  • Herramientas externas como SonarQube Scanner for Maven permiten subir métricas a servidores de análisis continuo.

Automatizar la generación de reportes facilita que equipos técnicos y responsables de calidad accedan a información actualizada sin procesos manuales.

Resumen didáctico

Los plugins son el motor del ciclo de vida de Maven. Saber elegir, configurar y combinar plugins de compilación, pruebas y reportes permite personalizar el pipeline sin perder las ventajas declarativas del POM. Con una configuración cuidada obtendrás construcciones reproducibles, métricas objetivas y documentación generada automáticamente.