Maven: co to jest pluginManagement?

To fragment mojego pliku 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>
...

Używam go z powodzeniem za pomocą polecenia

mvn install

Ale kiedy próbuję załączyć go do tagu "pluginManagement", maven-dependency-plugin przestaje działać, gdy uruchamiam cel install. Dlaczego znacznik "pluginManagement"zmienia zachowanie budowania? A może powinienem użyć innego celu lub opcji?

Author: carlspring, 2012-05-07

4 answers

Musisz jeszcze dodać

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

W Twojej kompilacji, ponieważ pluginManagement jest tylko sposobem na współdzielenie tej samej konfiguracji wtyczki we wszystkich modułach projektu.

Z Dokumentacji Mavena:

PluginManagement : jest elementem widocznym wzdłuż bocznych wtyczek. Plugin Management zawiera elementy plugin w taki sam sposób, z tym wyjątkiem, że zamiast konfigurowania informacji plugin dla tego konkretnego projektu budować, jest przeznaczony do skonfigurowania projektu buduje, że / align = "left" / Jednak to tylko konfiguruje wtyczki, które są faktycznie odwołuje się w elemencie wtyczki w dzieci. Dzieci mają pełne prawo do nadpisania definicji zarządzania wtyczkami.

 241
Author: jordeu,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2014-02-11 15:08:00

Różnica między <pluginManagement/> i <plugins/> jest taka, że <plugin/> Pod:

  • <pluginManagement/> definiuje Ustawienia wtyczek, które będą dziedziczone przez moduły w Twojej kompilacji. Jest to idealne rozwiązanie w przypadku, gdy masz macierzysty plik pom.

  • <plugins/> jest rzeczywistym wywołaniem wtyczki. Może być dziedziczona od <pluginManagement/>.

Nie musisz mieć <pluginManagement/> w swoim projekcie, jeśli nie jest to rodzic POM. Jeśli jednak jest to pom rodzica, to w dziecku pom, musisz mieć deklarację typu:

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

Zauważ, że nie definiujesz żadnej konfiguracji. Możesz dziedziczyć go po rodzicu, chyba że musisz dalej dostosować swoje wywołanie zgodnie z potrzebami projektu dziecka.

Aby uzyskać bardziej szczegółowe informacje, możesz sprawdzić:

 190
Author: carlspring,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2018-06-06 11:05:24

Używasz pluginManagement w macierzystym pom, aby skonfigurować go na wypadek, gdyby jakikolwiek pom dziecka chciał go używać, ale nie każda wtyczka dziecka chce go używać. Przykładem może być to, że Twój super pom definiuje niektóre opcje dla wtyczki Maven Javadoc. Nie każde dziecko pom może chcieć używać Javadoc, więc definiujesz te wartości domyślne w sekcji pluginManagement. Potomny pom, który chce używać wtyczki Javadoc, po prostu definiuje sekcję wtyczki i dziedziczy konfigurację z definicji pluginManagement w rodzic pom.

 28
Author: Wim Deblauwe,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2012-05-07 13:49:49

PluginManagement: jest elementem widocznym wzdłuż bocznych wtyczek. Plugin Management zawiera elementy plugin w taki sam sposób, z tym wyjątkiem, że zamiast konfigurowania informacji o wtyczce dla tego konkretnego projektu build, jest przeznaczony do skonfigurowania projektów buduje, które dziedziczą z tego. Jednak to tylko konfiguruje wtyczki, które są faktycznie odwołuje się w elemencie wtyczki w dzieci. Dzieci mają pełne prawo do obejścia zarządzania wtyczką definicje.

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

Skopiowane z:

Maven2-problem z pluginManagement i relacją rodzic-dziecko

 3
Author: ant,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2017-05-23 11:55:02