2016-12-05 73 views
0

我有一個作爲可執行JAR部署到AIX機器的應用程序。我使用Maven的陰影來構建一個Uber JAR,該JAR具有我的所有依賴包裝在JAR中; Spring,Logback和javax.mail。該應用程序由另一個執行shell腳本的程序調用。這一切都很好。 DBA要求我從JAR中刪除所有依賴項,將它們放在AIX機器的目錄中,並將這些位置包含在AIX用戶的CLASSPATH中。他表示這是最佳做法。我之前在Maven中使用過<scope>provided</scope>標籤來不打包Container將提供的依賴關係,但我從來沒有用JAR運行過這種類型的請求。這是這種情況下的最佳做法嗎?JAR依賴性部署的最佳實踐

+0

重複使用?這是迄今爲止唯一可靠的答案。 – Hodglem

+0

爲什麼會有一個獨立的lib文件夾,其中包含所有的jar文件,而不是將它們打包成一個簡單的可以由'java -jar ...'啓動的jar文件?使類路徑用戶不可知論聽起來很奇怪?這可以通過appasseml的maven插件來實現......它可以生成shell腳本來處理類路徑生成等...... – khmarbaise

+0

如果您開始重新使用庫的某些部分,您將引入一個共享庫,使更新更加容易複雜,如果不是不可能...更好的路徑自足...... – khmarbaise

回答

0

在Uber-JAR中,依賴關係不可見。但是有很多人需要知道並列出所有的依賴關係,因爲他們需要發佈應用程序中使用的所有許可證列表(例如gnu,asf ...)。

因此,如果您需要清楚列出所有依賴項,那麼Uber-JAR並不是您應該去的最佳做法。