Maven: ¿Qué es pluginManagement?


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 con éxito con el comando

mvn install

Pero, cuando intento encerrarlo en la etiqueta "pluginManagement", el maven-dependency-plugin deja de funcionar cuando lanzo el objetivo install. ¿Por qué la etiqueta" pluginManagement " cambia el comportamiento de compilación? ¿O debo usar otro objetivo u opción?

Author: carlspring, 2012-05-07

4 answers

Todavía necesita agregar

<plugins>
    <plugin>
        <groupId>org.apache.maven.plugins</groupId>
        <artifactId>maven-dependency-plugin</artifactId>
    </plugin>
</plugins>

En tu compilación, porque pluginManagement es solo una forma de compartir la misma configuración de plugin en todos los módulos de tu proyecto.

De la documentación de Maven:

PluginManagement: es un elemento que se ve junto a plugins. La administración de complementos contiene elementos de complementos de la misma manera, excepto que en lugar de configurar la información de complementos para esta compilación de proyecto en particular, está destinado a configurar compilaciones de proyectos que hereda de éste. Sin embargo, esto solo configura complementos a los que realmente se hace referencia dentro del elemento plugins en los hijos. Los niños tienen todo el derecho de anular las definiciones de pluginManagement.

 241
Author: jordeu,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/ajaxhispano.com/template/agent.layouts/content.php on line 61
2014-02-11 15:08:00

La diferencia entre <pluginManagement/> y <plugins/> es que a <plugin/> bajo:

  • <pluginManagement/> define la configuración de los complementos que serán heredados por los módulos en su compilación. Esto es ideal para los casos en los que tiene un archivo pom para padres.

  • <plugins/> es una invocación real del plugin. Puede o no ser heredado de un <pluginManagement/>.

No necesitas tener un <pluginManagement/> en tu proyecto, si no es un POM padre. Sin embargo, si es un padre pom, entonces en el niño pom, necesitas 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 obtener información más específica, puede consultar:

 190
Author: carlspring,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/ajaxhispano.com/template/agent.layouts/content.php on line 61
2018-06-06 11:05:24

Utiliza pluginManagement en un pom padre para configurarlo en caso de que cualquier pom hijo quiera usarlo, pero no todos los complementos hijos quieran usarlo. Un ejemplo puede ser que tu super pom defina algunas opciones para el plugin maven Javadoc. Es posible que no todos los pom secundarios quieran usar Javadoc, por lo que debe definir esos valores predeterminados en una sección de administración de complementos. El pom hijo que quiere usar el plugin Javadoc, solo define una sección de plugin y heredará la configuración de la definición de pluginManagement en el padre pom.

 28
Author: Wim Deblauwe,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/ajaxhispano.com/template/agent.layouts/content.php on line 61
2012-05-07 13:49:49

PluginManagement: es un elemento que se ve junto a los plugins. La administración de complementos contiene elementos de complementos de la misma manera, excepto que en lugar de configurar la información de complementos para esta compilación de proyecto en particular, está destinada a configurar compilaciones de proyectos que hereden de esta. Sin embargo, esto solo configura complementos a los que realmente se hace referencia dentro del elemento plugins en los hijos. Los niños tienen todo el derecho de anular la administración del enchufe definición.

De http://maven.apache.org/pom.html#Plugin%5FManagement

Copiado de:

Maven2-problema con pluginManagement y relación padre-hijo

 3
Author: ant,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/ajaxhispano.com/template/agent.layouts/content.php on line 61
2017-05-23 11:55:02