Sollte in Maven-Multiprojekten in der Sub pom.xml eine Version angegeben werden oder nur in der Haupt pom.xml?

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 -Tag gesetzt ist. Das sorgt für Konsistenz, erleichtert das Versionsmanagement und reduziert Redundanz. Dies gilt insbesondere dann, wenn alle Module stets gemeinsam veröffentlicht werden sollen und immer dieselbe Version haben.

Praxisbeispiel:

– In der Parent-pom.xml:

– In der Submodul-pom.xml (z.B. modul-a/pom.xml):

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 -Tag in der Regel weggelassen werden. Das ist der erwartete und konsistente Maven-Standard.