6.1 Introducción a los complementos

Los ciclos de vida estándar se pueden mejorar con la funcionalidad mediante los complementos de Maven. Los complementos le permiten insertar nuevos pasos en el ciclo estándar (por ejemplo, distribución al servidor de aplicaciones) o ampliar los pasos existentes.

Los complementos en Maven no son algo extraordinario, por el contrario, son lo más común y frecuente. Después de todo, si desea establecer algunos matices de la construcción de su proyecto, debe especificar la información necesaria en pom.xml. Y la única forma de hacer esto es escribir un "complemento".

Dado que los complementos son tanto artefactos como dependencias, se describen de la misma manera. En lugar de la sección de dependencias - complementos, en lugar de dependencia - complemento, en lugar de repositorios - pluginRepositories, repositorio - pluginRepository.

Ejemplo:

<plugins>
    <plugin>
        <groupId>org.apache.maven.plugins</groupId>
        <artifactId>maven-checkstyle-plugin</artifactId>
        <version>2.6</version>
    </plugin>
</plugins>

Declarar un complemento en pom.xml le permite corregir la versión del complemento, así como establecer los parámetros necesarios para él, definir varios parámetros de configuración y vincular a las fases.

En otras palabras, Maven ejecuta ciertos complementos que hacen todo el trabajo. Es decir, si queremos enseñarle a Maven sobre compilaciones especiales del proyecto, debemos agregar a pom.xml una indicación para iniciar el complemento deseado en la fase requerida y con los parámetros requeridos .

La cantidad de complementos disponibles es muy grande, hay varios complementos que le permiten ejecutar una aplicación web directamente desde maven para probarla en un navegador, generar recursos y similares. La tarea principal del desarrollador en esta situación es encontrar y aplicar el conjunto de complementos más adecuado .

6.2 Ciclo de vida y complementos

Muy a menudo, se utiliza un complemento para ejecutar algún tipo de utilidad de consola durante una determinada fase. Además, incluso podemos ejecutar una clase Java regular (que tiene un método principal, por supuesto).

Ejemplo:

<plugin>
  <groupId>org.codehaus.mojo</groupId>
  <artifactId>exec-maven-plugin</artifactId>
  <version>1.2.1</version>
  <executions>
    <execution>
      <goals>
        <goal>java</goal>
      </goals>
    </execution>
  </executions>
  <configuration>
    <mainClass>com.example.Main</mainClass>
    <arguments>
      <argument>first-argument</argument>
      <argument>second-argument</argument>
    </arguments>
  </configuration>
</plugin>

Por lo general, los complementos se pueden configurar de manera muy flexible. Todos los complementos oficiales de los desarrolladores de Maven están muy bien documentados en el sitio web oficial de Maven. Por ejemplo, para maven-compiler-plugin en la página del proyecto Apache Maven, puede ver una lista de todas las variables que controlan el complemento. La información sobre el complemento está disponible en el enlace

Más información importante. Maven llama a diferentes complementos en diferentes etapas de su ciclo de vida. Por ejemplo, un proyecto que describe una aplicación de escritorio Java oscilante tiene diferentes etapas del ciclo de vida de las que son típicas para el desarrollo de una aplicación web (war).

O, por ejemplo, cuando se ejecuta el comando “mvn test”, se inicia todo un conjunto de pasos en el ciclo de vida del proyecto: “process-resources”, “compile”, “process-classes”, “process-test-resources”. ”, “prueba-compilación”, prueba. Puede ver la mención de estas fases en los mensajes que muestra Maven:

[INFO] Scanning for projects...
[INFO]
[INFO] --- maven-resources-plugin:2.6:resources (default-resources)     @ codegym ---
[INFO] --- maven-compiler-plugin:3.1:compile (default-compile)      @ codegym
[INFO] --- maven-resources-plugin:2.6:testResources         (default-testResources) @ codegym ---
[INFO] --- maven-compiler-plugin:3.1:testCompile (default-testCompile)          @ codegym ---
[INFO] --- maven-surefire-plugin:2.12.4:test (default-test)         @ codegym ---
[INFO] Surefire report directory:           t:\ projects\codegym\target\surefire-reports

6.3 Goles en Maven - goles

En Maven, también existe un objetivo (objetivo). El objetivo es algo así como el objetivo de inicio de Maven. Los objetivos principales coinciden con las fases principales:

  • validar;
  • compilar;
  • prueba;
  • paquete;
  • verificar;
  • instalar;
  • desplegar.

En cada fase del ciclo de vida del proyecto, se llama a un complemento específico (jar-library), que incluye una serie de objetivos (objetivo)

Por ejemplo, el complemento "maven-compiler-plugin" contiene dos objetivos: compilador: compilar para compilar el código fuente principal del proyecto y compilador: testCompile para compilar pruebas. Formalmente, la lista de fases se puede cambiar, aunque rara vez es necesario.

Si necesita realizar algunas acciones no estándar en una fase determinada, solo necesita agregar el complemento apropiado a pom.xml

<plugin>
  <groupId>org.apache.maven.plugins</groupId>
  <artifactId>Name-plugin</artifactId>
  <executions>
    <execution>
      <id>customTask</id>
      <phase>generate-sources</phase>
      <goals>
        <goal>pluginGoal</goal>
      </goals>
    </execution>
  </executions>
</plugin>

Lo más importante en este caso es definir para el complemento el nombre de la fase de "ejecución/fase", en la que debe incrustar la llamada al objetivo del complemento "objetivo". Por ejemplo, necesita generar código Java basado en xml. Luego necesitas la fase de “generar fuentes”, que se coloca antes de la llamada a la fase de compilación y es ideal para generar parte de las fuentes del proyecto.