{"id":22368,"date":"2025-01-17T05:31:11","date_gmt":"2025-01-17T04:31:11","guid":{"rendered":"http:\/\/blog.wenzlaff.de\/?p=22368"},"modified":"2025-01-17T09:38:18","modified_gmt":"2025-01-17T08:38:18","slug":"muss-in-der-pom-xml-von-maven-in-der-dependencymanagement-eigentlich-ein-scope-angegeben-werden","status":"publish","type":"post","link":"http:\/\/blog.wenzlaff.de\/?p=22368","title":{"rendered":"Muss in der pom.xml von Maven in der dependencyManagement-Sektion eigentlich ein Scope wie z.b. test angegeben werden?"},"content":{"rendered":"<p>Der  Scope  sollte in der <strong>dependencyManagement<\/strong>-Sektion der pom.xml <strong>nicht<\/strong>  angegeben werden, au\u00dfer in bestimmten Ausnahmef\u00e4llen. <\/p>\n<p><img loading=\"lazy\" decoding=\"async\" src=\"http:\/\/blog.wenzlaff.de\/wp-content\/uploads\/2025\/01\/maven-dep-man.webp\" alt=\"\" width=\"1792\" height=\"1024\" class=\"aligncenter size-full wp-image-22369\" srcset=\"http:\/\/blog.wenzlaff.de\/wp-content\/uploads\/2025\/01\/maven-dep-man.webp 1792w, http:\/\/blog.wenzlaff.de\/wp-content\/uploads\/2025\/01\/maven-dep-man-300x171.webp 300w, http:\/\/blog.wenzlaff.de\/wp-content\/uploads\/2025\/01\/maven-dep-man-1024x585.webp 1024w, http:\/\/blog.wenzlaff.de\/wp-content\/uploads\/2025\/01\/maven-dep-man-768x439.webp 768w, http:\/\/blog.wenzlaff.de\/wp-content\/uploads\/2025\/01\/maven-dep-man-1536x878.webp 1536w\" sizes=\"auto, (max-width: 767px) 89vw, (max-width: 1000px) 54vw, (max-width: 1071px) 543px, 580px\" \/><\/p>\n<p>Was ist die Funktion von <strong>dependencyManagement<\/strong>?<br \/>\nDie <strong>dependencyManagement<\/strong>-Sektion dient dazu, Abh\u00e4ngigkeiten zentral zu verwalten, insbesondere in Multi-Modul-Projekten. Sie erm\u00f6glicht: <!--more--><\/p>\n<p>&#8211; Die zentrale Definition von Versionsnummern und anderen Attributen (z. B. Exclusions) f\u00fcr Abh\u00e4ngigkeiten.<\/p>\n<p>&#8211; Die Vererbung dieser Informationen durch untergeordnete Module, ohne dass diese die Versionen explizit angeben m\u00fcssen.<\/p>\n<p>Abh\u00e4ngigkeiten, die in <strong>dependencyManagement<\/strong> definiert sind, werden  nicht automatisch  Teil des Projekts. Sie m\u00fcssen explizit in der <strong>dependencyManagement<\/strong>-Sektion eines Moduls referenziert werden, um tats\u00e4chlich verwendet zu werden.<\/p>\n<p>Sollte Scope in <strong>dependencyManagement<\/strong> angegeben werden? <\/p>\n<p>In der Regel sollte der Scope <strong>nicht<\/strong> in <strong>dependencyManagement<\/strong> angegeben werden. Der Grund daf\u00fcr ist, dass der Scope haupts\u00e4chlich den Kontext definiert, in dem eine Abh\u00e4ngigkeit verwendet wird (z. B. compile, test, runtime), und dies spezifisch f\u00fcr die tats\u00e4chliche Verwendung im Modul festgelegt werden sollte. Der Scope geh\u00f6rt daher prim\u00e4r in die <strong>dependencies<\/strong>-Sektion.<br \/>\n<strong><br \/>\nAusnahme: Scope import <\/strong><\/p>\n<p>Der einzige Scope, der sinnvoll in <<strong>dependencyManagement<\/strong> verwendet wird, ist import. Dieser wird genutzt, um eine BOM (Bill of Materials) zu importieren, die wiederum andere Abh\u00e4ngigkeiten und deren Versionen definiert. Beispiel:<\/p>\n<pre class=\"lang:xhtml decode:true \" >&lt;dependencyManagement&gt;\r\n    &lt;dependencies&gt;\r\n        &lt;dependency&gt;\r\n            &lt;groupId&gt;org.springframework&lt;\/groupId&gt;\r\n            &lt;artifactId&gt;spring-framework-bom&lt;\/artifactId&gt;\r\n            &lt;version&gt;5.3.10&lt;\/version&gt;\r\n            &lt;scope&gt;import&lt;\/scope&gt;\r\n            &lt;type&gt;pom&lt;\/type&gt;\r\n        &lt;\/dependency&gt;\r\n    &lt;\/dependencies&gt;\r\n&lt;\/dependencyManagement&gt;\r\n<\/pre>\n<p>Dieser Scope ist speziell f\u00fcr die Verwaltung gro\u00dfer Projekte mit mehreren Abh\u00e4ngigkeiten gedacht.<br \/>\n<strong><br \/>\nBest Practices <\/strong><br \/>\n1.  Definiere den Scope in <strong>dependencies<\/strong> : Wenn eine Abh\u00e4ngigkeit tats\u00e4chlich verwendet wird, sollte ihr Scope im entsprechenden Modul spezifiziert werden.<\/p>\n<pre class=\"lang:xhtml decode:true \" >   &lt;dependencies&gt;\r\n       &lt;dependency&gt;\r\n           &lt;groupId&gt;junit&lt;\/groupId&gt;\r\n           &lt;artifactId&gt;junit&lt;\/artifactId&gt;\r\n           &lt;version&gt;4.13.2&lt;\/version&gt;\r\n           &lt;scope&gt;test&lt;\/scope&gt;\r\n       &lt;\/dependency&gt;\r\n   &lt;\/dependencies&gt;\r\n   <\/pre>\n<p>2.  Vermeide Scope-Deklarationen in dependencyManagement , au\u00dfer bei import.<\/p>\n<p>3.  Nutze <strong>dependencyManagement<\/strong> f\u00fcr zentrale Versionierung : Definiere dort nur die Versionen und Attribute, die f\u00fcr alle Module gelten sollen.<\/p>\n<p>Also der Scope sollte im Allgemeinen nicht in der <strong>dependencyManagement<\/strong>-Sektion angegeben werden, da dies gegen die Best Practices verst\u00f6\u00dft und potenziell zu Verwirrung f\u00fchrt. Die Ausnahme bildet der Scope import, der speziell f\u00fcr BOMs gedacht ist.<\/p>\n","protected":false},"excerpt":{"rendered":"<p>Der Scope sollte in der dependencyManagement-Sektion der pom.xml nicht angegeben werden, au\u00dfer in bestimmten Ausnahmef\u00e4llen. Was ist die Funktion von dependencyManagement? Die dependencyManagement-Sektion dient dazu, Abh\u00e4ngigkeiten zentral zu verwalten, insbesondere in Multi-Modul-Projekten. Sie erm\u00f6glicht:<\/p>\n","protected":false},"author":2,"featured_media":0,"comment_status":"closed","ping_status":"closed","sticky":false,"template":"","format":"standard","meta":{"footnotes":""},"categories":[220,5,79],"tags":[66,2099,6108,194],"class_list":["post-22368","post","type-post","status-publish","format-standard","hentry","category-anleitung","category-java","category-programmierung","tag-maven","tag-mvn","tag-scope","tag-test-2"],"_links":{"self":[{"href":"http:\/\/blog.wenzlaff.de\/index.php?rest_route=\/wp\/v2\/posts\/22368","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=22368"}],"version-history":[{"count":0,"href":"http:\/\/blog.wenzlaff.de\/index.php?rest_route=\/wp\/v2\/posts\/22368\/revisions"}],"wp:attachment":[{"href":"http:\/\/blog.wenzlaff.de\/index.php?rest_route=%2Fwp%2Fv2%2Fmedia&parent=22368"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"http:\/\/blog.wenzlaff.de\/index.php?rest_route=%2Fwp%2Fv2%2Fcategories&post=22368"},{"taxonomy":"post_tag","embeddable":true,"href":"http:\/\/blog.wenzlaff.de\/index.php?rest_route=%2Fwp%2Fv2%2Ftags&post=22368"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}