2016-12-05 3 views
0

Ich habe eine Anwendung, die auf einer AIX-Maschine als ausführbare JAR bereitgestellt wird. Ich benutzte Maven Schatten, um ein Uber JAR zu bauen, in dem alle meine Abhängigkeiten in der JAR gepackt sind. Spring, Logback und javax.mail. Die Anwendung wird von einem anderen Programm aufgerufen, das ein Shell-Skript ausführt. Das alles funktioniert gut. Der DBA hat angefordert, dass ich alle Abhängigkeiten von der JAR entferne, sie in Verzeichnisse auf der AIX-Maschine platziere und diese Speicherorte in den CLASSPATH des AIX-Benutzers einbeziehe. Er gab an, dass dies die beste Vorgehensweise sei. Ich habe das <scope>provided</scope>-Tag zuvor in Maven verwendet, um Abhängigkeiten nicht zu packen, die der Container bereitstellen würde, aber ich bin nie auf diese Art von Anfrage mit einer JAR gestoßen. Ist dies eine Best Practice in diesem Szenario?Best Practice für JAR Dependency Deployment

+0

Wiederverwendung? Das ist die einzige solide Antwort, die ich bis jetzt bekommen habe. – Hodglem

+0

Warum sollte es einen separaten lib-Ordner geben, der alle jars enthält, anstatt sie in einem einzigen jar zu packen, das einfach mit 'java -jar ...' gestartet werden kann? Einen Classpath-Benutzer agnostisch zu machen, klingt merkwürdig? Dies kann durch das appassemblber maven plugin ... erreicht werden, das die Shell-Skripte erzeugen kann, um die Klassenpfadgenerierung usw. zu handhaben. – khmarbaise

+0

Wenn Sie Teile der Bibliotheken wiederverwenden, müssen Sie eine gemeinsame Bibliothek einführen, die die Aktualisierung verbessert kompliziert, wenn nicht unmöglich ... gehe besser den Weg selbstständig .... – khmarbaise

Antwort

0

Im Uber-JAR sind die Abhängigkeiten nicht sichtbar. Aber es gibt viele Leute da draußen, die alle Abhängigkeiten kennen und auflisten müssen, weil sie eine Liste aller Lizenzen (zum Beispiel gnu, asf ...) veröffentlichen müssen, die in der Anwendung verwendet werden.

Also, wenn Sie eine klare Auflistung aller Abhängigkeiten benötigen, dann ist die Uber-JAR nicht die beste Vorgehensweise, die Sie gehen sollten.