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)?

Antworten auf die Frage(5)

Ihre Antwort auf die Frage