2016-04-07 4 views
1

Da wir unser altes Projekt auf Maven migrieren, stehen wir vor folgendem Problem.So erhalten Sie eine Liste der Abhängigkeiten des Maven-Projekts in der Java-Klasse

Wir haben ein Kernprojekt sagen, xyz und Teilprojekte p1, p2. Um das Teilprojekt in das Kernprojekt einzufügen, setzen wir das Teilprojekt des Teilprojekts in das Kernprojekt. Jetzt, wenn dieses Kernprojekt gestartet wird, versuchen Sie, ob es irgendwelche Unterprojekte gibt, indem Sie die MANIFEST-Datei aller jars im Verzeichnis WEB-INF/lib des Kernprojekts überprüfen.

Nun in Maven Projektstruktur, gibt es kein Lib-Verzeichnis, so wie kann ich Liste aller Gläser erhalten von Core-Projekt (mit ihrem Pfad) bekommen?

Jede Hilfe wird geschätzt.

Antwort

0

Maven Dependencies Plugin zeigt alle Abhängigkeiten Ihres Projekts, auch transitive. Bitte versuchen Sie es:

$ mvn dependency:tree 

Wenn Sie Abhängigkeiten zur Laufzeit herausfinden müssen, sollte es möglich sein, die Classpath zu untersuchen (die Maven setzt sich für Sie, wenn Sie Ihr Projekt von Maven exec gestartet wird). Für Java SE Anwendung ohne benutzerdefinierte Classloader sollten folgende Arbeiten:

ClassLoader cl = ClassLoader.getSystemClassLoader(); 

    URL[] urls = ((URLClassLoader) cl).getURLs(); 
    for (URL url : urls) { 
     System.out.println(url.getFile()); 
    } 
+0

Hallo @Gunther, Ihre Lösung für mich gearbeitet, wenn ich wenig Änderung zu dein Code. Anstelle von ClassLoader.getSystemClassLoader() habe ich "ClassLoader cl = getClass(). GetClassLoader();" Danke. –

1

Werfen Sie einen Blick auf die pom.xml jedes Projekts.

Das ist die Schönheit von Maven (einer von ihnen), jede Abhängigkeit ist dort aufgeführt, so dass Sie nicht in den verschiedenen Verzeichnisprojekten jagen müssen.

Jetzt, wenn Sie die tatsächlichen heruntergeladenen Dateien finden müssen, sollten Sie in Ihrem maven home Ordner (MAVEN_HOME oder M2_HOME) überprüfen.

0

Sie jHades verwenden können überlappende Gläser zu finden: http://jhades.org/

<dependency> 
    <groupId>org.jhades</groupId> 
    <artifactId>jhades</artifactId> 
    <version>1.0.4</version> 
</dependency> 

new JHades() 
.printClassLoaders() 
.printClasspath() 
.overlappingJarsReport() 
.multipleClassVersionsReport() 
.findClassByName("org.apache.bval.jsr303.ApacheValidationProvider") 
.findClassByName("javax.validation.spi.ValidationProvider"); 
Verwandte Themen