Maven: Qu'est-ce que pluginManagement?
C'est un extrait de mon fichier 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>
...
je l'utilise avec succès avec la commande
mvn install
mais, quand j'essaie de l'inclure dans l'étiquette" pluginManagement", le maven-dependency-plugin
cesse de fonctionner quand je lance l'objectif install
.
Pourquoi la balise" pluginManagement " change-t-elle le comportement de construction? Ou devrais-je utiliser un autre but ou une autre option?
4 réponses
vous devez encore ajouter
<plugins>
<plugin>
<groupId>org.apache.maven.plugins</groupId>
<artifactId>maven-dependency-plugin</artifactId>
</plugin>
</plugins>
dans votre construction, car pluginManagement
n'est qu'un moyen de partager la même configuration de plugin à travers tous vos modules de projet.
De Maven de la documentation:
pluginManagement : est un élément qui est vu le long des plugins latéraux. Gestion de Plugin contient des éléments de plugin de la même manière, sauf que plutôt que de configurer le plugin informations pour cette construction de projet particulier, il est prévu de configurer les constructions de projet qui héritent de celui-ci. Cependant, cela ne configure que les plugins qui sont référencés dans l'élément plugins dans les enfants. Les enfants ont le droit de passer outre aux définitions de pluginManagement.
la différence entre <pluginManagement/>
et <plugins/>
est qu'un <plugin/>
sous:
-
<pluginManagement/>
définit les paramètres des plugins qui seront hérités par les modules dans votre Compilation. C'est génial pour les cas où vous avez un fichier parent pom. -
<plugins/>
est une invocation réelle du plugin. Il peut être hérité ou non d'un<pluginManagement/>
.
vous n'avez pas besoin d'avoir un <pluginManagement/>
dans votre projet, si ce n'est pas un parent POM. Cependant, si c'est un parent pom, alors dans le pom de l'enfant, vous devez avoir une déclaration comme:
<plugins>
<plugin>
<groupId>com.foo</groupId>
<artifactId>bar-plugin</artifactId>
</plugin>
</plugins>
remarquez que vous ne définissez aucune configuration. Vous pouvez l'hériter du parent, à moins que vous ayez besoin d'ajuster votre invocation en fonction des besoins du projet enfant.
pour des informations plus spécifiques, vous pouvez consulter:
-
La pom Maven.référence xml: Plugins
-
La pom Maven.référence xml: gestion de Plugin
vous utilisez pluginManagement dans un parent pom pour le configurer au cas où n'importe quel enfant pom veut l'utiliser, mais pas chaque plugin enfant veut l'utiliser. Un exemple peut être que votre super pom définit certaines options pour le plugin Maven Javadoc. Pas chaque enfant pom pourrait vouloir utiliser Javadoc, donc vous définissez ces valeurs par défaut dans une section pluginManagement. L'enfant pom qui veut utiliser le plugin Javadoc, définit juste une section de plugin et héritera de la configuration de pluginManagement définition dans la pom mère.
pluginManagement: est un élément qui est vu le long des plugins latéraux. La gestion de Plugin contient des éléments de plugin de la même manière, sauf que plutôt que de configurer des informations de plugin pour cette construction de projet particulière, il est prévu de configurer des constructions de projet qui héritent de celle-ci. Cependant, cela ne configure que les plugins qui sont référencés dans l'élément plugins dans les enfants. Les enfants ont tous les droits de passer outre pluginManagement définition.
de http://maven.apache.org/pom.html#Plugin%5FManagement
copié de:
Maven2 - problème avec pluginManagement et de la relation parent-enfant