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?

190
demandé sur carlspring 2012-05-07 17:43:08

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.

241
répondu jordeu 2014-02-11 15:08:00

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:

190
répondu carlspring 2018-06-06 11:05:24

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.

28
répondu Wim Deblauwe 2012-05-07 13:49:49

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

3
répondu ant 2017-05-23 11:55:02