2017-04-17 1 views
2

Wie der Header sagt Ich frage mich, ob es eine solche Möglichkeit in Maven zu wissen, das Glas eine Klassendatei in einem Modul geladen wird. Genau wie die Abhängigkeit: Baum, aber ich würde gerne Jars mit einer bestimmten Klassendatei sehen. Vielen Dank!Finden Sie Gläser mit einer Klassendatei in Maven Projekt

+0

Auf der Maven Central können Sie eine Suche über http://search.maven.org/#advancedsearch%7Cgav durchführen oder sprechen Sie über Ihren lokalen Cache $ HOME/.m2/repository oder innerhalb eines Repository-Managers? – khmarbaise

+0

@khmarbaise Ich spreche über den Fall, wenn Sie ein Maven-Projekt mit mehreren Modulen haben und Sie nach allen möglichen Orten in allen Gläsern suchen möchten, von denen das Projekt für eine bestimmte Klassendatei abhängt. Also sollte es alle Gläser laden, die ich denke, und eine Suche durchführen, wenn es möglich ist –

+0

Ich würde meine IDE für solche Dinge verwenden? – khmarbaise

Antwort

2

Soweit ich weiß, gibt es kein spezielles Maven-Plugin (3.0+), das Abhängigkeiten für Klassendeklarationen sucht. Aber ich glaube, ich Ihren Bedarf zu verstehen und bieten die folgenden Lösungen:

Suchen nach doppelten Erklärungen

mvn dependency:analyze-duplicate -DcheckDuplicateClasses 

Finden JAR innerhalb von Eclipse enthält

Verwenden CTRL + SHIFT + T zum Öffnen der Open Type Dialog. Wenn Sie den Teil oder den gesamten Klassennamen eingeben, wird eine Liste der enthaltenen JARs im Klassenpfad angezeigt.

Suche enthält JAR ohne IDE

Wenn mehr programmatische Steuerung für die Überprüfung auf Systemen ohne IDE erforderlich ist, sagen wir ein CI-Server können die folgenden Schnipsel verwendet werden JAR-Dateien zur Liste eine bestimmte Klasse enthalten oder sogar ein spezifisches Namensmuster Dieser Ansatz verwendet das Abhängigkeits-Plugin von Maven, um alle Abhängigkeiten in einem temporären Verzeichnis zu sammeln, so dass sie leicht durchsucht werden können.

Für Unix oder Git Bash Systeme

mvn clean dependency:copy-dependencies -D=target/temp 
for j in target/temp/*.jar; do jar -tf $j | grep SomeClass && echo $j; done 

Für Windows über cmd Shell

mvn clean dependency:copy-dependencies -D=target/temp 
for /R %G in (target\temp\*.jar) do @jar -tf "%G" | find "SomeClass" && echo %G 

In jedem Fall wird ein Name angezeigt wird volle Paket und Klasse passenden Eintrag, gefolgt von Der Name der JAR-Datei. grep und find Suchparameter können weiter verfeinert werden, um Übereinstimmungen wie benötigt zu beschränken, wie SomeClass.class.

Hoffe, das hilft.

+0

Ich war das, wonach ich gesucht habe. Vielen Dank! –

Verwandte Themen