Co to jest pluginManagement w Pom Mavena.xml?
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?
5 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.
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 sekcją do rzeczywistego wywołania wtyczek. 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 rodzic pom, następnie w pom dziecka musisz mieć deklarację w stylu:
<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ć:
-
Maven pom.XML reference: Plugins
-
Maven pom.XML reference: Plugin Management
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
2021-01-15 22:45:02
Używasz pluginManagement
w parent pom
, Aby skonfigurować go na wypadek, gdyby jakikolwiek child pom
chciał go użyć, ale nie każda wtyczka potomna chce go używać. Przykładem może być to, że super pom
definiuje niektóre opcje wtyczki Maven Javadoc.
Nie każdy child pom
może chcieć używać Javadoc, więc definiujesz te wartości domyślne w sekcji pluginManagement
. Pom potomny, który chce używać wtyczki Javadoc, po prostu definiuje sekcję wtyczki i odziedziczy konfigurację z definicji pluginManagement
W parent pom
.
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
2019-12-17 10:13:16
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:
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
Więc jeśli dobrze zrozumiałem, powiedziałbym, że <pluginManagement>
podobnie jak <dependencyManagement>
są używane do współdzielenia tylko konfiguracji między rodzicem a jego podmodułami.
W tym celu definiujemy wspólne konfiguracje zależności i wtyczki w projekcie nadrzędnym, a następnie musimy zadeklarować zależność / wtyczkę w podmodułach, aby z niej korzystać, bez konieczności definiowania konfiguracji dla niej (tj. Wersja lub wykonanie, cele, itp.). Chociaż nie uniemożliwia nam to nadpisania konfiguracji w submodule.
W przeciwieństwie <dependencies>
i {[3] } są dziedziczone wraz z ich konfiguracjami i nie powinny być ponownie zgłaszane w podmodułach, w przeciwnym razie wystąpiłby konflikt.
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
2020-08-06 13:45:32