Ich kämpfe derzeit mit Maven: Ich habe ein komplexes Projekt aus mehreren verschachtelten Modulen und für einige dieser Module habe ich ähnliche Konfigurationen in den POMs.Wie teile ich POM-Fragmente zwischen verschiedenen POMs?
Ich möchte es sauber machen. Eigentlich würde ich gerne eine "runnable-jar" allgemeine Konfiguration definieren und sie in einigen Modulen aktivieren.
Hier wird das POM-Fragment, das ich zwischen mehreren Projekten teilen möchten:
<build>
<plugins>
<plugin>
<artifactId>maven-assembly-plugin</artifactId>
<configuration>
<!-- Use a custom descriptor, with suffix "bin" -->
<descriptors>
<descriptor>src/main/assembly/runnable-jar-assembly.xml</descriptor>
</descriptors>
<!-- Add main class to manifest -->
<archive>
<manifest>
<mainClass>${mainClass}</mainClass>
</manifest>
</archive>
</configuration>
<!-- Add build of this package to lifecycle -->
<executions>
<execution>
<id>make-runnable-jar</id>
<phase>package</phase>
<goals>
<goal>single</goal>
</goals>
</execution>
</executions>
</plugin>
</plugins>
</build>
In einigen der POMS, würde ich gerne der Lage sein, etwas zu tun, wie: Ich
<!-- Set the main class -->
<properties>
<mainClass>my.main.Class</mainClass>
</properties>
<!-- Activate runnable jar build -->
<import>src/main/pom/runnable-jar-pom.xml</import>
habe nach einem Mittelwert gesucht, um einige XML-Fragmente in ein POM zu importieren oder ein ganzes XML-Nodeset-Makro zu definieren.
Für das, was ich gefunden habe, wäre die nächste Lösung, ein Profil im übergeordneten POM zu definieren und es in einigen Untermodulen zu aktivieren, indem das Vorhandensein einer Datei getestet wird. See this related question. Aber ich bin mit dem Problem konfrontiert, dass die Eigenschaft {basedir}
nicht korrekt geerbt/gesetzt ist.
Ich finde es sehr überraschend, einen Hack zu brauchen, um etwas so grundlegendes zu tun (= üblich). Wie gehst du normalerweise mit Maven um?
Schön. Ich war mir dieser Möglichkeit nicht bewusst. –