entfernen Sie unbenutzte Gläser von Projekt
Was ist die einfachste Möglichkeit (tool ?) so entfernen Sie unbenutzte Gläser von meinem java - (ant -) Projekt. Unser Projekt ist wirklich umfangreich geworden, und die wollen wir bereinigen. Es gibt verschiedene Gläser, die sind, werden dem classpath Hinzugefügt, aber nicht alle sind für kompilieren/ausführen. Gibt es einen Weg, um die unnötige Gläser, indem Sie einige Dienstprogramm von der Befehlszeile aus?
Hinweis:: wir wollen nicht zu Folgen, das mühsame entfernen von einem oder mehr Gläser, dann kompilieren/starten um zu testen, ob diese erforderlich sind oder nicht.
Du musst angemeldet sein, um einen Kommentar abzugeben.
Dies ist, was ich getan habe endlich
Ich verwendete JBOSS TattleTale (http://www.jboss.org/tattletale) unbenutzte Gläser zur compile-Zeit (gemeldet 17 Gläser unbenutzt).
Dann für jedes Glas in dieser Liste, ich habe eine string-Suche, die auf mein Projekt zu finden, wenn das höchste Paket Ebene des Glases war überall verwendet (dies ist ein Versuch, um zu sehen, wenn jede Klasse, die Zugehörigkeit zu dieser jar geladen wurde mit der spiegelung).
Diese Weise konnte ich erfolgreich beseitigen 6 Gläser von meinem Projekt.
Da die Anzahl der unbenutzten Gläser zur compile-Zeit klein war, wurde dieser Ansatz schnell.
Wenn es eine bessere Lösung gibt, ich würde es gerne hören.
Das problem ist, dass selbst wenn ein Glas nicht notwendig ist, um kompilieren, könnte es erforderlich sein, um die laufen. Und dieses "müssen" kann transitiv. ZB: EIN Glas, das Sie verwenden, muss eine jar, die Sie nicht verwenden und nur zur Laufzeit. Wie ist die Art des Laufzeit-Fehler, Sie werden nur zeigen, dass selbst wenn Sie versuchen, den code auszuführen. Schlimmsten Fall, das kann nicht auftreten, bis Sie in der Produktion laufen.
Die beste Lösung die ich kenne ist genau das, was Sie nicht wollen, zu tun: "entfernen Sie eine oder mehrere Gläser, dann kompilieren/starten um zu testen, ob diese erforderlich sind oder nicht".
Entfernen -> Test -> Entfernen> Test -> Entfernen> Hoffe, Sie genießen 🙂
Change-Projekt auf maven und wählen Sie nur Glas, das Sie verwenden möchten. Für mich ist dies der einfachste Weg.
Wie bereits von tieTYT in seiner Antwort, viele Gläser benötigt werden, nur zur compile-Zeit. (beispielsweise jdbc-Implementierung Gläser)
Ein weiterer Ansatz könnte sein, schreiben einen java-Agenten und sammeln Sie alle Klassennamen. Sie können dann diese Karte Klassennamen jar und sehen, ob alle Gläser sind nicht erforderlich.
Beispiel agent
Build.xml... für ant
Anderen Ansatz, den wir versucht in windows war mit der Tatsache, dass die Gläser gesperrt, wenn Klassen geladen werden. Führen Sie die Anwendung und versuchen Sie zu löschen von runtime-Bereich. Wenn es verwendet wurde, löschen Sie ausfallen sollte. Nicht sicher, wie sicher das ist - ich weiß, dass es nicht funktioniert auf linux, etc, die Dateien können gelöscht werden, ohne problem.