{"id":20219,"date":"2023-06-20T01:32:19","date_gmt":"2023-06-19T23:32:19","guid":{"rendered":"http:\/\/blog.wenzlaff.de\/?p=20219"},"modified":"2023-08-06T20:19:53","modified_gmt":"2023-08-06T18:19:53","slug":"wie-kann-eine-liste-aller-maven-abhaengigkeiten-eines-projektes-erstellt-werden","status":"publish","type":"post","link":"http:\/\/blog.wenzlaff.de\/?p=20219","title":{"rendered":"Wie kann eine Datei-Liste aller Maven Abh\u00e4ngigkeiten eines Projektes erstellt werden?"},"content":{"rendered":"<p>Manchmal will man eine Liste aller Abh\u00e4ngigkeite eines Maven-Projektes in einer eigenen Datei. <\/p>\n<p><img loading=\"lazy\" decoding=\"async\" src=\"http:\/\/blog.wenzlaff.de\/wp-content\/uploads\/2023\/06\/smile.webp\" alt=\"\" width=\"1920\" height=\"1080\" class=\"aligncenter size-full wp-image-20222\" srcset=\"http:\/\/blog.wenzlaff.de\/wp-content\/uploads\/2023\/06\/smile.webp 1920w, http:\/\/blog.wenzlaff.de\/wp-content\/uploads\/2023\/06\/smile-300x169.webp 300w, http:\/\/blog.wenzlaff.de\/wp-content\/uploads\/2023\/06\/smile-1024x576.webp 1024w, http:\/\/blog.wenzlaff.de\/wp-content\/uploads\/2023\/06\/smile-768x432.webp 768w, http:\/\/blog.wenzlaff.de\/wp-content\/uploads\/2023\/06\/smile-1536x864.webp 1536w\" sizes=\"auto, (max-width: 767px) 89vw, (max-width: 1000px) 54vw, (max-width: 1071px) 543px, 580px\" \/><\/p>\n<p>Das geht einfach mit dem <a href=\"https:\/\/maven.apache.org\/plugins\/maven-dependency-plugin\/\" rel=\"noopener\" target=\"_blank\">maven-dependency-plugin<\/a>.<\/p>\n<p>Die effiziente Verwaltung von Abh\u00e4ngigkeiten ist ein grundlegendes Element bei der Entwicklung von Java-Projekten. Maven ist ein weit verbreitetes Build-Management-Tool, das Entwicklern erm\u00f6glicht, Abh\u00e4ngigkeiten zu verwalten und den Build-Prozess zu automatisieren. Das Maven-Dependency-Plugin ist eine Erweiterung von Maven, die speziell f\u00fcr die Handhabung von Abh\u00e4ngigkeiten entwickelt wurde.<\/p>\n<p>Also einfach das Plugin in der pom.xml einbinden z.B.: <!--more--><\/p>\n<pre class=\"minimize:true lang:xhtml decode:true \" >&lt;plugin&gt;\r\n\t\t\t\t&lt;groupId&gt;org.apache.maven.plugins&lt;\/groupId&gt;\r\n\t\t\t\t&lt;artifactId&gt;maven-dependency-plugin&lt;\/artifactId&gt;\r\n\t\t\t\t&lt;version&gt;3.6.0&lt;\/version&gt;\r\n\t\t\t\t&lt;executions&gt;\r\n\t\t\t\t\t&lt;execution&gt;\r\n\t\t\t\t\t\t&lt;id&gt;analyze&lt;\/id&gt;\r\n\t\t\t\t\t\t&lt;goals&gt;\r\n\t\t\t\t\t\t\t&lt;goal&gt;analyze-only&lt;\/goal&gt;\r\n\t\t\t\t\t\t&lt;\/goals&gt;\r\n\t\t\t\t\t\t&lt;configuration&gt;\r\n\t\t\t\t\t\t\t&lt;failOnWarning&gt;false&lt;\/failOnWarning&gt;\r\n\t\t\t\t\t\t\t&lt;outputXML&gt;true&lt;\/outputXML&gt;\r\n\t\t\t\t\t\t&lt;\/configuration&gt;\r\n\t\t\t\t\t&lt;\/execution&gt;\r\n\t\t\t\t&lt;\/executions&gt;\r\n\t\t\t&lt;\/plugin&gt;<\/pre>\n<p>Und schon hat man einen Report, auch bei Fehlern in der Form:<\/p>\n<pre class=\"lang:default decode:true \" >\r\n\r\n\r\n[WARNING] Unused declared dependencies found:\r\n[WARNING]    org.apache.logging.log4j:log4j-core:jar:2.20.0:compile\r\n[WARNING]    org.slf4j:slf4j-simple:jar:2.0.0-alpha5:compile\r\n[WARNING]    com.itextpdf:itext7-core:pom:7.2.2:compile\r\n[WARNING]    com.itextpdf:io:jar:7.2.2:compile\r\n[WARNING]    org.junit.jupiter:junit-jupiter-engine:jar:5.9.3:test\r\n[WARNING]    com.tngtech.archunit:archunit-junit5:jar:1.0.1:test\r\n\r\n<\/pre>\n<p>Oder auch mit <strong>dependency:tree<\/strong>, mit dem man den Abh\u00e4ngigkeitsbaum des Projekts anzeigen kann. Dieser Befehl zeigt alle Abh\u00e4ngigkeiten des Projekts und deren Hierarchie an. Also z.B.<\/p>\n<pre class=\"minimize:true lang:default decode:true \" >[INFO] --- dependency:3.6.0:tree (default-cli) @ de.wenzlaff.twbibel ---\r\n[INFO] de.wenzlaff.twbibel:de.wenzlaff.twbibel:jar:0.1.1\r\n[INFO] +- org.openjfx:javafx-graphics:jar:mac:20.0.1:compile\r\n[INFO] |  \\- org.openjfx:javafx-base:jar:20.0.1:compile\r\n[INFO] +- org.openjfx:javafx-fxml:jar:mac:20.0.1:compile\r\n[INFO] |  \\- org.openjfx:javafx-controls:jar:20.0.1:compile\r\n[INFO] +- org.openjfx:javafx-controls:jar:mac:20.0.1:compile\r\n[INFO] |  \\- org.openjfx:javafx-graphics:jar:20.0.1:compile\r\n[INFO] +- org.openjfx:javafx-base:jar:mac:20.0.1:compile\r\n[INFO] +- org.apache.httpcomponents:httpclient:jar:4.5.13:compile\r\n[INFO] |  +- org.apache.httpcomponents:httpcore:jar:4.4.13:compile\r\n[INFO] |  \\- commons-logging:commons-logging:jar:1.2:compile\r\n[INFO] +- org.apache.logging.log4j:log4j-core:jar:2.20.0:compile\r\n[INFO] +- org.apache.logging.log4j:log4j-api:jar:2.20.0:compile\r\n[INFO] +- org.slf4j:slf4j-simple:jar:2.0.0-alpha5:compile\r\n[INFO] |  \\- org.slf4j:slf4j-api:jar:2.0.0-alpha5:compile\r\n[INFO] +- org.mnode.ical4j:ical4j:jar:3.0.4:compile\r\n[INFO] |  +- org.apache.commons:commons-lang3:jar:3.6:compile\r\n[INFO] |  \\- org.apache.commons:commons-collections4:jar:4.1:compile\r\n[INFO] +- commons-cli:commons-cli:jar:1.2:compile\r\n[INFO] +- com.itextpdf:itext7-core:pom:7.2.2:compile\r\n[INFO] |  +- com.itextpdf:barcodes:jar:7.2.2:compile\r\n[INFO] |  +- com.itextpdf:font-asian:jar:7.2.2:compile\r\n[INFO] |  +- com.itextpdf:forms:jar:7.2.2:compile\r\n[INFO] |  +- com.itextpdf:hyph:jar:7.2.2:compile\r\n[INFO] |  +- com.itextpdf:pdfa:jar:7.2.2:compile\r\n[INFO] |  +- com.itextpdf:sign:jar:7.2.2:compile\r\n[INFO] |  +- com.itextpdf:styled-xml-parser:jar:7.2.2:compile\r\n[INFO] |  \\- com.itextpdf:svg:jar:7.2.2:compile\r\n[INFO] +- com.itextpdf:layout:jar:7.2.2:compile\r\n[INFO] +- com.itextpdf:kernel:jar:7.2.2:compile\r\n[INFO] |  +- org.bouncycastle:bcpkix-jdk15on:jar:1.70:compile\r\n[INFO] |  |  \\- org.bouncycastle:bcutil-jdk15on:jar:1.70:compile\r\n[INFO] |  \\- org.bouncycastle:bcprov-jdk15on:jar:1.70:compile\r\n[INFO] +- com.itextpdf:io:jar:7.2.2:compile\r\n[INFO] |  \\- com.itextpdf:commons:jar:7.2.2:compile\r\n[INFO] +- info.picocli:picocli:jar:4.6.1:compile\r\n[INFO] +- org.junit.jupiter:junit-jupiter-engine:jar:5.9.3:test\r\n[INFO] |  +- org.junit.platform:junit-platform-engine:jar:1.9.3:test\r\n[INFO] |  \\- org.apiguardian:apiguardian-api:jar:1.1.2:test\r\n[INFO] +- org.junit.jupiter:junit-jupiter-api:jar:5.9.3:test\r\n[INFO] |  +- org.opentest4j:opentest4j:jar:1.2.0:test\r\n[INFO] |  \\- org.junit.platform:junit-platform-commons:jar:1.9.3:test\r\n[INFO] +- com.tngtech.archunit:archunit-junit5:jar:1.0.1:test\r\n[INFO] |  \\- com.tngtech.archunit:archunit-junit5-engine:jar:1.0.1:test\r\n[INFO] |     \\- com.tngtech.archunit:archunit-junit5-engine-api:jar:1.0.1:test\r\n[INFO] +- com.tngtech.archunit:archunit:jar:1.0.1:test\r\n[INFO] \\- com.tngtech.archunit:archunit-junit5-api:jar:1.0.1:test\r\n[INFO] ------------------------------------------------------------------------\r\n[INFO] BUILD SUCCESS\r\n<\/pre>\n<p>Aber wir wollten die Ausgabe aber ja in einer Datei.<\/p>\n<p>Dann ein<br \/>\n<strong>mvn dependency:list -DexcludeTransitive=false -DoutputFile=projekt-liste-mit-transitive.txt<\/strong><\/p>\n<p>und schon haben wir eine Liste aller Abh\u00e4ngikeiten in der Datei projekt-liste-mit-transitive.txt mit transitiven Abh\u00e4ngigkeiten in der Form z.B:<\/p>\n<p>Will man alles ohne transitive Abh\u00e4ngigkeiten dann ein<\/p>\n<p><strong>mvn dependency:list -DexcludeTransitive=true -DoutputFile=projekt-liste-ohne-transitive.txt<\/strong><\/p>\n<p>und das liefert f\u00fcr das Beispielprojet dann:<\/p>\n","protected":false},"excerpt":{"rendered":"<p>Manchmal will man eine Liste aller Abh\u00e4ngigkeite eines Maven-Projektes in einer eigenen Datei. Das geht einfach mit dem maven-dependency-plugin. Die effiziente Verwaltung von Abh\u00e4ngigkeiten ist ein grundlegendes Element bei der Entwicklung von Java-Projekten. Maven ist ein weit verbreitetes Build-Management-Tool, das Entwicklern erm\u00f6glicht, Abh\u00e4ngigkeiten zu verwalten und den Build-Prozess zu automatisieren. Das Maven-Dependency-Plugin ist eine Erweiterung &hellip; <\/p>\n<p class=\"link-more\"><a href=\"http:\/\/blog.wenzlaff.de\/?p=20219\" class=\"more-link\"><span class=\"screen-reader-text\">\u201eWie kann eine Datei-Liste aller Maven Abh\u00e4ngigkeiten eines Projektes erstellt werden?\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":{"footnotes":""},"categories":[220,3161,4,3083,5,3897,3163,79],"tags":[1601,2539,269,5419,66],"class_list":["post-20219","post","type-post","status-publish","format-standard","hentry","category-anleitung","category-build","category-eclipse","category-information","category-java","category-java-programmierung","category-maven","category-programmierung","tag-abhaengigkeiten","tag-list","tag-liste","tag-liste-aller-abhaengigkeiten","tag-maven"],"_links":{"self":[{"href":"http:\/\/blog.wenzlaff.de\/index.php?rest_route=\/wp\/v2\/posts\/20219","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=20219"}],"version-history":[{"count":0,"href":"http:\/\/blog.wenzlaff.de\/index.php?rest_route=\/wp\/v2\/posts\/20219\/revisions"}],"wp:attachment":[{"href":"http:\/\/blog.wenzlaff.de\/index.php?rest_route=%2Fwp%2Fv2%2Fmedia&parent=20219"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"http:\/\/blog.wenzlaff.de\/index.php?rest_route=%2Fwp%2Fv2%2Fcategories&post=20219"},{"taxonomy":"post_tag","embeddable":true,"href":"http:\/\/blog.wenzlaff.de\/index.php?rest_route=%2Fwp%2Fv2%2Ftags&post=20219"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}