webentwicklung-frage-antwort-db.com.de

Was ist PluginManagement in Mavens pom.xml?

Dies ist ein Ausschnitt aus meiner POM-Datei.

....
        <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>
...

Ich benutze es erfolgreich mit dem Befehl

mvn install

Aber wenn ich versuche, es in das "pluginManagement" -Tag einzuschließen, wird das maven-dependency-plugin funktioniert nicht mehr, wenn ich das Ziel install starte. Warum ändert das Tag "pluginManagement" das Build-Verhalten? Oder sollte ich ein anderes Ziel oder eine andere Option verwenden?

Sie müssen noch hinzufügen

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

in Ihrem Build, da pluginManagement nur eine Möglichkeit ist, die gleiche Plug-in-Konfiguration für alle Ihre Projektmodule zu verwenden.

Aus der Maven-Dokumentation:

pluginManagement: ist ein Element, das neben Plugins angezeigt wird. Die Plug-in-Verwaltung enthält Plug-in-Elemente auf die gleiche Weise, mit der Ausnahme, dass die Plug-in-Informationen für diesen bestimmten Projektbuild nicht konfiguriert werden, sondern Projektbuilds konfiguriert werden sollen, die von diesem Build erben. Hiermit werden jedoch nur Plugins konfiguriert, auf die im Element plugins in den untergeordneten Elementen tatsächlich verwiesen wird. Die Kinder haben das Recht, PluginManagement-Definitionen zu überschreiben.

271
jordeu

Der Unterschied zwischen <pluginManagement/> Und <plugins/> Ist, dass ein <plugin/> Unter:

  • <pluginManagement/> Definiert die Einstellungen für Plugins, die von Modulen in Ihrem Build geerbt werden. Dies ist ideal für Fälle, in denen Sie eine übergeordnete POM-Datei haben.

  • <plugins/> Ist ein tatsächlicher Aufruf des Plugins. Es kann von einem <pluginManagement/> Geerbt werden oder nicht.

Sie müssen kein <pluginManagement/> In Ihrem Projekt haben, wenn es sich nicht um ein übergeordnetes POM handelt. Wenn es sich jedoch um einen übergeordneten Pom handelt, müssen Sie im Pom des Kindes eine Deklaration haben, die wie folgt lautet:

<plugins>
    <plugin>
        <groupId>com.foo</groupId>
        <artifactId>bar-plugin</artifactId>
    </plugin>
</plugins>

Beachten Sie, dass Sie keine Konfiguration definieren. Sie können es vom übergeordneten Projekt erben, es sei denn, Sie müssen Ihren Aufruf weiter an die Anforderungen des untergeordneten Projekts anpassen.

Für genauere Informationen können Sie Folgendes überprüfen:

231
carlspring

Sie verwenden pluginManagement in einem übergeordneten POM, um es zu konfigurieren, falls ein untergeordneter POM es verwenden möchte, aber nicht jedes untergeordnete Plugin es verwenden möchte. Ein Beispiel kann sein, dass Ihr Super-POM einige Optionen für das Javadoc-Plugin des Maven definiert. Möglicherweise möchten nicht alle untergeordneten POMs Javadoc verwenden, daher definieren Sie diese Standardeinstellungen in einem PluginManagement-Abschnitt. Der untergeordnete POM, der das Javadoc-Plugin verwenden möchte, definiert lediglich einen Plugin-Abschnitt und erbt die Konfiguration von der PluginManagement-Definition im übergeordneten POM.

34
Wim Deblauwe

pluginManagement: ist ein Element, das neben Plugins angezeigt wird. Die Plug-in-Verwaltung enthält Plug-in-Elemente auf die gleiche Weise, mit der Ausnahme, dass die Plug-in-Informationen für diesen bestimmten Projektbuild nicht konfiguriert werden, sondern Projektbuilds konfiguriert werden sollen, die von diesem Build erben. Hiermit werden jedoch nur Plugins konfiguriert, auf die im Element plugins in den untergeordneten Elementen tatsächlich verwiesen wird. Die Kinder haben das Recht, PluginManagement-Definitionen zu überschreiben.

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

Kopiert von:

Maven2 - Problem mit PluginManagement und Eltern-Kind-Beziehung

3
ant