In Maven-Multiprojekten (Multi-Module-Projekten) gilt als Best Practice, die Version ausschließlich in der Haupt- (Parent-) pom.xml zu definieren und in den Submodul-poms keine eigene Versionsangabe für das Artefakt zu machen.
Submodule erben die Version automatisch vom Parent, sofern im Submodul kein eigenes
Praxisbeispiel:
– In der Parent-pom.xml:
1 2 3 4 5 6 7 8 9 10 |
<project> <groupId>de.beispiel</groupId> <artifactId>mein-projekt-parent</artifactId> <version>1.2.3</version> <packaging>pom</packaging> <modules> <module>modul-a</module> <module>modul-b</module> </modules> </project> |
– In der Submodul-pom.xml (z.B. modul-a/pom.xml):
1 2 3 4 5 6 7 8 9 10 11 12 |
<project> <parent> <groupId>de.beispiel</groupId> <artifactId>mein-projekt-parent</artifactId> <version>1.2.3</version> <relativePath>../pom.xml</relativePath> </parent> <artifactId>modul-a</artifactId> <!-- Keine eigene <version>-Angabe --> </project> |
Vorteile dieser Herangehensweise:
– Minimierte Fehleranfälligkeit: Es wird verhindert, dass Submodule versehentlich inkonsistente Versionsstände bekommen.
– Einfachere Pflege: Ein Versionswechsel erfolgt nur an einer Stelle (der Parent-pom), nicht redundant in vielen Dateien.
– Kompatibilität mit Maven-Standards: Maven erwartet dieses Vorgehen und gibt Warnungen aus, wenn in Submodulen Variablen oder Properties als Version benutzt werden.
Wann eigene Versionen im Submodul?
Nur wenn ein Submodul unabhängig vom Parent-Versionstand weiterentwickelt/veröffentlicht werden soll, wird eine eigene Version im Submodul sinnvoll oder notwendig. In den meisten klassischen Multi-Module-Projekten ist das aber nicht der Fall.
Also, die Version gehört bei Maven-Multiprojekten ausschließlich in die Haupt-pom.xml. In Submodulen sollte das