{"id":22784,"date":"2025-07-30T18:45:35","date_gmt":"2025-07-30T16:45:35","guid":{"rendered":"http:\/\/blog.wenzlaff.de\/?p=22784"},"modified":"2025-08-02T09:45:02","modified_gmt":"2025-08-02T07:45:02","slug":"sollte-in-maven-multiprojekten-in-der-sub-pom-xml-eine-version-angegeben-werden-oder-nur-in-der-haupt-pom-xml","status":"publish","type":"post","link":"http:\/\/blog.wenzlaff.de\/?p=22784","title":{"rendered":"Sollte in Maven-Multiprojekten in der Sub pom.xml eine Version angegeben werden oder nur in der Haupt pom.xml?"},"content":{"rendered":"<p>In Maven-Multiprojekten (Multi-Module-Projekten) gilt als <strong>Best Practice<\/strong>, die Version <strong>ausschlie\u00dflich<\/strong> in der Haupt- (Parent-) pom.xml zu definieren und in den Submodul-poms <strong>keine<\/strong> eigene Versionsangabe f\u00fcr das Artefakt zu machen. <\/p>\n<p><img loading=\"lazy\" decoding=\"async\" src=\"http:\/\/blog.wenzlaff.de\/wp-content\/uploads\/2025\/03\/maven.gif\" alt=\"\" width=\"512\" height=\"288\" class=\"aligncenter size-full wp-image-22620\" \/><\/p>\n<p>Submodule erben die Version automatisch vom Parent, sofern im Submodul kein eigenes <version>-Tag gesetzt ist. Das sorgt f\u00fcr Konsistenz, erleichtert das Versionsmanagement und reduziert Redundanz. Dies gilt insbesondere dann, wenn alle Module stets gemeinsam ver\u00f6ffentlicht werden sollen und immer dieselbe Version haben.<\/p>\n<p>Praxisbeispiel: <!--more--><\/p>\n<p>&#8211; In der Parent-pom.xml:<\/p>\n<pre class=\"theme:dark-terminal lang:default decode:true \" >\r\n  &lt;project&gt;\r\n    &lt;groupId&gt;de.beispiel&lt;\/groupId&gt;\r\n    &lt;artifactId&gt;mein-projekt-parent&lt;\/artifactId&gt;\r\n    &lt;version&gt;1.2.3&lt;\/version&gt;\r\n    &lt;packaging&gt;pom&lt;\/packaging&gt;\r\n    &lt;modules&gt;\r\n      &lt;module&gt;modul-a&lt;\/module&gt;\r\n      &lt;module&gt;modul-b&lt;\/module&gt;\r\n    &lt;\/modules&gt;\r\n  &lt;\/project&gt;\r\n<\/pre>\n<p>&#8211; In der Submodul-pom.xml (z.B. modul-a\/pom.xml):<\/p>\n<pre class=\"theme:dark-terminal lang:default decode:true \" >\r\n  &lt;project&gt;\r\n    &lt;parent&gt;\r\n      &lt;groupId&gt;de.beispiel&lt;\/groupId&gt;\r\n      &lt;artifactId&gt;mein-projekt-parent&lt;\/artifactId&gt;\r\n      &lt;version&gt;1.2.3&lt;\/version&gt;\r\n      &lt;relativePath&gt;..\/pom.xml&lt;\/relativePath&gt;\r\n    &lt;\/parent&gt;\r\n    &lt;artifactId&gt;modul-a&lt;\/artifactId&gt;\r\n\r\n    &lt;!-- Keine eigene &lt;version&gt;-Angabe --&gt;\r\n\r\n  &lt;\/project&gt;\r\n<\/pre>\n<p><strong>Vorteile<\/strong> dieser Herangehensweise:<\/p>\n<p>&#8211; <strong>Minimierte Fehleranf\u00e4lligkeit<\/strong>: Es wird verhindert, dass Submodule versehentlich inkonsistente Versionsst\u00e4nde bekommen.<\/p>\n<p>&#8211; <strong>Einfachere Pflege<\/strong>: Ein Versionswechsel erfolgt nur an einer Stelle (der Parent-pom), nicht redundant in vielen Dateien.<\/p>\n<p>&#8211; <strong>Kompatibilit\u00e4t mit Maven-Standards<\/strong>: Maven erwartet dieses Vorgehen und gibt Warnungen aus, wenn in Submodulen Variablen oder Properties als Version benutzt werden.<\/p>\n<p>Wann eigene Versionen im Submodul?<\/p>\n<p>Nur wenn ein Submodul unabh\u00e4ngig vom Parent-Versionstand weiterentwickelt\/ver\u00f6ffentlicht werden soll, wird eine eigene Version im Submodul sinnvoll oder notwendig. In den meisten klassischen Multi-Module-Projekten ist das aber nicht der Fall.<\/p>\n<p>Also, die Version geh\u00f6rt bei Maven-Multiprojekten <strong>ausschlie\u00dflich<\/strong> in die Haupt-pom.xml. In Submodulen sollte das <version>-Tag in der Regel weggelassen werden. Das ist der erwartete und konsistente Maven-Standard.<\/p>\n<p><img loading=\"lazy\" decoding=\"async\" src=\"http:\/\/blog.wenzlaff.de\/wp-content\/uploads\/2025\/07\/wenzlaff.de-2025-07-30-um-19.15.52-scaled.jpeg\" alt=\"\" width=\"2560\" height=\"440\" class=\"aligncenter size-full wp-image-22789\" srcset=\"http:\/\/blog.wenzlaff.de\/wp-content\/uploads\/2025\/07\/wenzlaff.de-2025-07-30-um-19.15.52-scaled.jpeg 2560w, http:\/\/blog.wenzlaff.de\/wp-content\/uploads\/2025\/07\/wenzlaff.de-2025-07-30-um-19.15.52-300x52.jpeg 300w, http:\/\/blog.wenzlaff.de\/wp-content\/uploads\/2025\/07\/wenzlaff.de-2025-07-30-um-19.15.52-1024x176.jpeg 1024w, http:\/\/blog.wenzlaff.de\/wp-content\/uploads\/2025\/07\/wenzlaff.de-2025-07-30-um-19.15.52-768x132.jpeg 768w, http:\/\/blog.wenzlaff.de\/wp-content\/uploads\/2025\/07\/wenzlaff.de-2025-07-30-um-19.15.52-1536x264.jpeg 1536w, http:\/\/blog.wenzlaff.de\/wp-content\/uploads\/2025\/07\/wenzlaff.de-2025-07-30-um-19.15.52-2048x352.jpeg 2048w\" sizes=\"auto, (max-width: 767px) 89vw, (max-width: 1000px) 54vw, (max-width: 1071px) 543px, 580px\" \/><\/p>\n","protected":false},"excerpt":{"rendered":"<p>In Maven-Multiprojekten (Multi-Module-Projekten) gilt als Best Practice, die Version ausschlie\u00dflich in der Haupt- (Parent-) pom.xml zu definieren und in den Submodul-poms keine eigene Versionsangabe f\u00fcr das Artefakt zu machen. Submodule erben die Version automatisch vom Parent, sofern im Submodul kein eigenes -Tag gesetzt ist. Das sorgt f\u00fcr Konsistenz, erleichtert das Versionsmanagement und reduziert Redundanz. Dies &hellip; <\/p>\n<p class=\"link-more\"><a href=\"http:\/\/blog.wenzlaff.de\/?p=22784\" class=\"more-link\"><span class=\"screen-reader-text\">\u201eSollte in Maven-Multiprojekten in der Sub pom.xml eine Version angegeben werden oder nur in der Haupt pom.xml?\u201c <\/span>weiterlesen<\/a><\/p>\n","protected":false},"author":2,"featured_media":0,"comment_status":"closed","ping_status":"closed","sticky":false,"template":"","format":"standard","meta":{"_import_markdown_pro_load_document_selector":0,"_import_markdown_pro_submit_text_textarea":"","footnotes":""},"categories":[220,3161,3163],"tags":[6214,377,66,5145,267,102],"class_list":["post-22784","post","type-post","status-publish","format-standard","hentry","category-anleitung","category-build","category-maven","tag-best-practice","tag-build","tag-maven","tag-pom-xml","tag-version","tag-xml"],"_links":{"self":[{"href":"http:\/\/blog.wenzlaff.de\/index.php?rest_route=\/wp\/v2\/posts\/22784","targetHints":{"allow":["GET"]}}],"collection":[{"href":"http:\/\/blog.wenzlaff.de\/index.php?rest_route=\/wp\/v2\/posts"}],"about":[{"href":"http:\/\/blog.wenzlaff.de\/index.php?rest_route=\/wp\/v2\/types\/post"}],"author":[{"embeddable":true,"href":"http:\/\/blog.wenzlaff.de\/index.php?rest_route=\/wp\/v2\/users\/2"}],"replies":[{"embeddable":true,"href":"http:\/\/blog.wenzlaff.de\/index.php?rest_route=%2Fwp%2Fv2%2Fcomments&post=22784"}],"version-history":[{"count":0,"href":"http:\/\/blog.wenzlaff.de\/index.php?rest_route=\/wp\/v2\/posts\/22784\/revisions"}],"wp:attachment":[{"href":"http:\/\/blog.wenzlaff.de\/index.php?rest_route=%2Fwp%2Fv2%2Fmedia&parent=22784"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"http:\/\/blog.wenzlaff.de\/index.php?rest_route=%2Fwp%2Fv2%2Fcategories&post=22784"},{"taxonomy":"post_tag","embeddable":true,"href":"http:\/\/blog.wenzlaff.de\/index.php?rest_route=%2Fwp%2Fv2%2Ftags&post=22784"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}