¿Qué es pluginManagement en pom.xml de Maven?
Este es un fragmento de mi archivo pom.
...
<plugins>
<plugin>
<groupId>org.apache.maven.plugins</groupId>
<artifactId>maven-dependency-plugin</artifactId>
<version>2.4</version>
<executions>
<execution>
<phase>install</phase>
<goals>
<goal>copy-dependencies</goal>
</goals>
<configuration>
......
</configuration>
</execution>
</executions>
</plugin>
</plugins>
...
Lo uso exitosamente con el comando.
mvn install
Pero, cuando intento incluirlo en la etiqueta "pluginManagement", deja maven-dependency-plugin
de funcionar cuando lanzo el install
objetivo. ¿Por qué la etiqueta "pluginManagement" cambia el comportamiento de compilación? ¿O debería utilizar otro objetivo u opción?
Aún necesitas agregar
<plugins>
<plugin>
<groupId>org.apache.maven.plugins</groupId>
<artifactId>maven-dependency-plugin</artifactId>
</plugin>
</plugins>
en su compilación, porque pluginManagement
es solo una forma de compartir la misma configuración del complemento en todos los módulos de su proyecto.
De la documentación de Maven:
pluginManagement : es un elemento que se ve junto a los complementos. La administración de complementos contiene elementos de complementos de manera muy similar, excepto que en lugar de configurar la información del complemento para esta compilación de proyecto en particular, su objetivo es configurar compilaciones de proyectos que heredan de éste. Sin embargo, esto solo configura complementos a los que realmente se hace referencia dentro del elemento complementos en los elementos secundarios. Los niños tienen todo el derecho a anular las definiciones de pluginManagement.
La diferencia entre <pluginManagement/>
y <plugins/>
es que un <plugin/>
bajo:
<pluginManagement/>
define la configuración de los complementos que heredarán los módulos de su compilación. Esto es excelente para los casos en los que tiene un archivo pom principal y desea evitar tener que copiar el mismo código para la configuración del complemento en cada uno de estos módulos.<plugins/>
es una sección para la invocación real de los complementos. Puede o no heredarse de un archivo<pluginManagement/>
.
No es necesario tener un POM <pluginManagement/>
en su proyecto si no es un POM principal. Sin embargo, si es un pom principal, entonces en el pom del niño, debe tener una declaración como:
<plugins>
<plugin>
<groupId>com.foo</groupId>
<artifactId>bar-plugin</artifactId>
</plugin>
</plugins>
Observe cómo no está definiendo ninguna configuración. Puede heredarlo del padre, a menos que necesite ajustar aún más su invocación según las necesidades del proyecto hijo.
Para información más específica, puedes consultar:
La referencia de Maven pom.xml: complementos
La referencia de Maven pom.xml: Gestión de complementos