Definieren Sie Maven-Plugins im übergeordneten POM, aber rufen Sie Plugins nur in untergeordneten Projekten auf
Ich habe eine Reihe von Projekten, die alle die gleiche Serie von Maven-Plugin-Ausführungen während ihrer Builds ausführen müssen. Ich möchte vermeiden, all diese Konfigurationen in jedem Projekt neu zu deklarieren, also habe ich sie alle von einem übergeordneten pom "template" -Projekt erben lassen, das nur die Plugin-Ausführungen enthält (8 verschiedene Mojos). Ich möchte jedoch, dass diese Plugin-Ausführungen nur für die untergeordneten Projekte und nicht für das übergeordnete Projekt während der Maven-Builds ausgeführt werden.
Ich habe versucht, dies auf vier verschiedene Arten zu erreichen, und zwar mit einem Nebeneffekt, den ich nicht mag.
Deklarieren Sie die Plugin-Ausführungen im übergeordneten POMbuild/plugins
element und benutze properties-maven-plugin ummach das ... anskip
Eigenschaften auf anderen Plugins im übergeordneten Projekt. Dies hat nicht funktioniert, da eines der Plugin-Ziele (maven-dependency-plugin: build-classpath) kein hatskip
Eigentum.
Deklarieren Sie die Plugin-Ausführungen im übergeordneten POMbuild/pluginManagement
Element. Leider muss ich dafür jedes der acht Plugins in der neu deklarierenbuild/plugins
Element jedes Kinderprojekts wie:
<plugin>
<artifactId>maven-assembly-plugin</artifactId>
</plugin>
...
Dies ist zu repetitiv und problematisch, wenn ich jemals die Plugins in der Vorlage pom ändern muss.
Deklarieren Sie die Plugin-Ausführungen in einem Profil im übergeordneten POM, das von derMangel von anobuild.txt
Datei (die im übergeordneten POM vorhanden ist, sodass die Plugins dort nicht ausgeführt werden):
<profiles>
<profile>
<activation>
<file>
<missing>nobuild.txt</missing>
</file>
</activation>
<build>
....
</build>
</profile>
</profiles>
Dies funktioniert größtenteils mit der Ausnahme, dass der Dateipfad in dermissing
Element scheint auf dem zu beruhenaktuelles Arbeitsverzeichnis anstelle des Projekts basedir. Dies zerstört einige der Multimodul-Builds, die ich gerne machen würde.Bearbeiten: Zur Verdeutlichung ist das übergeordnete "Template" -Projekt eigentlich selbst ein Modul in einem Multimodul-Projekt, und der Build bricht ab, wenn ich zum Beispiel versuche, ein zu erstellenmvn install
auf der Wurzel. Die Projektstruktur sieht folgendermaßen aus:
+ job
|- job-core
|- job-template
|- job1 inherits from job-template
|- job2 inherits from job-template
Richten Sie einen benutzerdefinierten Lebenszyklus und eine benutzerdefinierte Verpackung ein. Dies scheint mir zu ermöglichen, Plugins an Lebenszyklusphasen zu binden,Geben Sie jedoch keine Konfiguration an.
Gibt es also eine andere Möglichkeit, eine Reihe von Maven-Plug-In-Ausführungen anzugeben, die für mehrere Projekte wiederverwendet werden können (mit minimaler Wiederholung in jedem POM dieser Projekte)?