2009-09-08 7 views
5

Ich habe eine Situation, in der es ein kleines Stück Java-Code gibt, der eine große Anzahl von Gläsern hat, von denen es abhängt. Die Abhängigkeiten in diesen Gläsern sind jedoch sehr gering. In den meisten Fällen hängt es nur von einem Jar für eine einzelne Schnittstelle ab.Java Minimize Abhängigkeiten

Anstatt alle Jars mit der Anwendung zu verteilen, möchte ich nur die spezifischen Klassendateien in den Gläsern verteilen, die es tatsächlich verwendet. Der Grund dafür ist, Speicherplatz zu sparen (dieser Code wird in einem Applet gespeichert).

Kennt jemand ein Werkzeug oder eine Methode, um dies automatisch zu tun? Unter der Annahme, dass alle Abhängigkeiten statisch sind, scheint dies durchaus möglich. Irgendwelche Ideen?

Antwort

5

Classdepandjar wird eine Codebasis auf die wesentlichen Klassen abzustreifen. Es wird in der Jini-Welt verwendet, um optimal große Gläser zu liefern, aber es gibt nichts, was Jini-spezifisch ist.

Als Ant-Task verfügbar.

3

Soweit ich weiß, dies ist nur maven, aber es ist ein guter Anfang

Maven Shade Plugin: Dieses Plugin die Möglichkeit bietet, das Artefakt in einem uber-jar zu verpacken, einschließlich ihrer Abhängigkeiten und Schatten - das heißt umbenennen - die Pakete einiger Abhängigkeiten.

2

ProGuard schrumpft/optimierth und auch Verschleierung. Ich denke, du kannst es konfigurieren, um nur das eine oder das andere zu tun.