Manchmal will man eine Liste aller Abhängigkeite eines Maven-Projektes in einer eigenen Datei.
Das geht einfach mit dem maven-dependency-plugin.
Die effiziente Verwaltung von Abhängigkeiten ist ein grundlegendes Element bei der Entwicklung von Java-Projekten. Maven ist ein weit verbreitetes Build-Management-Tool, das Entwicklern ermöglicht, Abhängigkeiten zu verwalten und den Build-Prozess zu automatisieren. Das Maven-Dependency-Plugin ist eine Erweiterung von Maven, die speziell für die Handhabung von Abhängigkeiten entwickelt wurde.
Also einfach das Plugin in der pom.xml einbinden z.B.:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 |
<plugin> <groupId>org.apache.maven.plugins</groupId> <artifactId>maven-dependency-plugin</artifactId> <version>3.6.0</version> <executions> <execution> <id>analyze</id> <goals> <goal>analyze-only</goal> </goals> <configuration> <failOnWarning>false</failOnWarning> <outputXML>true</outputXML> </configuration> </execution> </executions> </plugin> |
Und schon hat man einen Report, auch bei Fehlern in der Form:
1 2 3 4 5 6 7 |
[WARNING] Unused declared dependencies found: [WARNING] org.apache.logging.log4j:log4j-core:jar:2.20.0:compile [WARNING] org.slf4j:slf4j-simple:jar:2.0.0-alpha5:compile [WARNING] com.itextpdf:itext7-core:pom:7.2.2:compile [WARNING] com.itextpdf:io:jar:7.2.2:compile [WARNING] org.junit.jupiter:junit-jupiter-engine:jar:5.9.3:test [WARNING] com.tngtech.archunit:archunit-junit5:jar:1.0.1:test |
Oder auch mit dependency:tree, mit dem man den Abhängigkeitsbaum des Projekts anzeigen kann. Dieser Befehl zeigt alle Abhängigkeiten des Projekts und deren Hierarchie an. Also z.B.
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 |
[INFO] --- dependency:3.6.0:tree (default-cli) @ de.wenzlaff.twbibel --- [INFO] de.wenzlaff.twbibel:de.wenzlaff.twbibel:jar:0.1.1 [INFO] +- org.openjfx:javafx-graphics:jar:mac:20.0.1:compile [INFO] | \- org.openjfx:javafx-base:jar:20.0.1:compile [INFO] +- org.openjfx:javafx-fxml:jar:mac:20.0.1:compile [INFO] | \- org.openjfx:javafx-controls:jar:20.0.1:compile [INFO] +- org.openjfx:javafx-controls:jar:mac:20.0.1:compile [INFO] | \- org.openjfx:javafx-graphics:jar:20.0.1:compile [INFO] +- org.openjfx:javafx-base:jar:mac:20.0.1:compile [INFO] +- org.apache.httpcomponents:httpclient:jar:4.5.13:compile [INFO] | +- org.apache.httpcomponents:httpcore:jar:4.4.13:compile [INFO] | \- commons-logging:commons-logging:jar:1.2:compile [INFO] +- org.apache.logging.log4j:log4j-core:jar:2.20.0:compile [INFO] +- org.apache.logging.log4j:log4j-api:jar:2.20.0:compile [INFO] +- org.slf4j:slf4j-simple:jar:2.0.0-alpha5:compile [INFO] | \- org.slf4j:slf4j-api:jar:2.0.0-alpha5:compile [INFO] +- org.mnode.ical4j:ical4j:jar:3.0.4:compile [INFO] | +- org.apache.commons:commons-lang3:jar:3.6:compile [INFO] | \- org.apache.commons:commons-collections4:jar:4.1:compile [INFO] +- commons-cli:commons-cli:jar:1.2:compile [INFO] +- com.itextpdf:itext7-core:pom:7.2.2:compile [INFO] | +- com.itextpdf:barcodes:jar:7.2.2:compile [INFO] | +- com.itextpdf:font-asian:jar:7.2.2:compile [INFO] | +- com.itextpdf:forms:jar:7.2.2:compile [INFO] | +- com.itextpdf:hyph:jar:7.2.2:compile [INFO] | +- com.itextpdf:pdfa:jar:7.2.2:compile [INFO] | +- com.itextpdf:sign:jar:7.2.2:compile [INFO] | +- com.itextpdf:styled-xml-parser:jar:7.2.2:compile [INFO] | \- com.itextpdf:svg:jar:7.2.2:compile [INFO] +- com.itextpdf:layout:jar:7.2.2:compile [INFO] +- com.itextpdf:kernel:jar:7.2.2:compile [INFO] | +- org.bouncycastle:bcpkix-jdk15on:jar:1.70:compile [INFO] | | \- org.bouncycastle:bcutil-jdk15on:jar:1.70:compile [INFO] | \- org.bouncycastle:bcprov-jdk15on:jar:1.70:compile [INFO] +- com.itextpdf:io:jar:7.2.2:compile [INFO] | \- com.itextpdf:commons:jar:7.2.2:compile [INFO] +- info.picocli:picocli:jar:4.6.1:compile [INFO] +- org.junit.jupiter:junit-jupiter-engine:jar:5.9.3:test [INFO] | +- org.junit.platform:junit-platform-engine:jar:1.9.3:test [INFO] | \- org.apiguardian:apiguardian-api:jar:1.1.2:test [INFO] +- org.junit.jupiter:junit-jupiter-api:jar:5.9.3:test [INFO] | +- org.opentest4j:opentest4j:jar:1.2.0:test [INFO] | \- org.junit.platform:junit-platform-commons:jar:1.9.3:test [INFO] +- com.tngtech.archunit:archunit-junit5:jar:1.0.1:test [INFO] | \- com.tngtech.archunit:archunit-junit5-engine:jar:1.0.1:test [INFO] | \- com.tngtech.archunit:archunit-junit5-engine-api:jar:1.0.1:test [INFO] +- com.tngtech.archunit:archunit:jar:1.0.1:test [INFO] \- com.tngtech.archunit:archunit-junit5-api:jar:1.0.1:test [INFO] ------------------------------------------------------------------------ [INFO] BUILD SUCCESS |
Aber wir wollten die Ausgabe aber ja in einer Datei.
Dann ein
mvn dependency:list -DexcludeTransitive=false -DoutputFile=projekt-liste-mit-transitive.txt
und schon haben wir eine Liste aller Abhängikeiten in der Datei projekt-liste-mit-transitive.txt mit transitiven Abhängigkeiten in der Form z.B:
Will man alles ohne transitive Abhängigkeiten dann ein
mvn dependency:list -DexcludeTransitive=true -DoutputFile=projekt-liste-ohne-transitive.txt
und das liefert für das Beispielprojet dann: