web-dev-qa-db-fra.com

Qu'est-ce que pluginManagement dans pav.xml de Maven?

Ceci 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, lorsque j'essaie de l'inclure dans la balise "pluginManagement", le maven-dependency-plugin cesse de fonctionner lorsque je lance l'objectif install. Pourquoi la balise "pluginManagement" modifie-t-elle le comportement de construction? Ou devrais-je utiliser un autre objectif ou une autre option?

Vous avez encore besoin d'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 plug-in entre tous vos modules de projet.

De la documentation Maven:

pluginManagement: est un élément visible aux côtés des plugins. Plugin Management contient des éléments de plug-in de la même manière, à la différence que plutôt que de configurer les informations de plug-in pour cette génération de projet particulière, il est destiné à configurer des générations de projet héritées de celle-ci. Cependant, cela ne configure que les plugins qui sont réellement référencés dans l'élément plugins des enfants. Les enfants ont tous les droits de remplacer les définitions de pluginManagement.

271
jordeu

La différence entre <pluginManagement/> et <plugins/> est qu'un <plugin/> sous:

  • <pluginManagement/> définit les paramètres des plug-ins qui seront hérités par les modules de votre construction. C'est très bien dans les cas où vous avez un fichier pom parent.

  • <plugins/> est un appel réel 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 POM parent. 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 en hériter du parent, sauf si vous devez ajuster davantage votre invocation en fonction des besoins du projet enfant.

Pour des informations plus spécifiques, vous pouvez vérifier:

231
carlspring

Vous utilisez pluginManagement dans un pom parent pour le configurer au cas où un pom enfant voudrait l’utiliser, mais tous les plugins enfants ne veulent pas l’utiliser. Un exemple peut être que votre super pom définit certaines options pour le plugin maven Javadoc. Chaque pom enfant ne voudra peut-être pas utiliser Javadoc, vous devez donc définir ces valeurs par défaut dans une section pluginManagement. Le pom enfant qui veut utiliser le plugin Javadoc, définit simplement une section de plugin et héritera de la configuration de la définition de pluginManagement dans le pom parent.

34
Wim Deblauwe

pluginManagement: est un élément visible aux côtés des plugins. Plugin Management contient des éléments de plug-in de la même manière, à la différence que plutôt que de configurer les informations de plug-in pour cette génération de projet particulière, il est destiné à configurer des générations de projet héritées de celle-ci. Cependant, cela ne configure que les plugins qui sont réellement référencés dans l'élément plugins des enfants. Les enfants ont tous les droits de remplacer les définitions de pluginManagement.

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

Copié de:

Maven2 - problème avec pluginManagement et relation parent-enfant

3
ant