plugin entries java maven build pom.xml maven-dependency-plugin

java - entries - maven jar plugin executable jar



Maven: ¿Qué es pluginManagement? (4)

Gestión de plugins: es un elemento que se ve a lo largo de complementos laterales. 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 construcción de proyecto en particular, está diseñada para configurar las construcciones de proyectos que se heredan de esta. Sin embargo, esto solo configura los complementos a los que realmente se hace referencia dentro del elemento complementos en los elementos secundarios. Los niños tienen todo el derecho de anular las definiciones de administración de plugins.

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

Copiado de :

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

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 trato de incluirlo en la etiqueta "administración de plugin", el maven-dependency-plugin deja de funcionar cuando lanzo el objetivo de install . ¿Por qué la etiqueta "pluginManagement" cambia el comportamiento de compilación? ¿O debería usar otra meta u opción?


Aún necesita 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 de plugin en todos los módulos de su proyecto.

De la documentación de Maven:

Gestión de plugins : es un elemento que se ve a lo largo de complementos laterales. 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 construcción de proyecto en particular, está diseñada para configurar las construcciones de proyectos que se heredan de esta. Sin embargo, esto solo configura los complementos a los que realmente se hace referencia dentro del elemento complementos en los elementos secundarios. Los niños tienen todo el derecho de anular las definiciones de administración de plugins.


La diferencia entre <pluginManagement/> y <plugins/> es que un <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 principal.

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

No es necesario tener un <pluginManagement/> en su proyecto, si no es un POM principal. Sin embargo, si se trata de un padre pom, 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 secundario.

Para información más específica, puedes consultar:


Utiliza pluginManagement en un pom principal para configurarlo en caso de que algún pom secundario quiera usarlo, pero no todos los complementos secundarios quieran usarlo. Un ejemplo puede ser que su super pom define algunas opciones para el complemento Javadoc de Maven. Es posible que no todos los pom secundarios quieran usar Javadoc, por lo que define esos valores predeterminados en una sección de administración de plugin. El pom secundario que quiere usar el complemento Javadoc, simplemente define una sección de complementos y heredará la configuración de la definición de administración de complementos en el pom principal.