我有一個Java項目富,但對bar.jar依賴及其Maven構建是如下:如何使用庫依賴鏈來分發Java應用程序?
- 富/
---- foo.jar中
--- - LIB/
------ bar.jar
------(其他LIB罐)
的foo.jar中的MANIFEST.MF有場Class-Path: . lib/bar.jar ... (other lib jars)
和,它可以通過命令調用java -jar foo.jar
bar.jar是從另一個依賴於httpclient-4.5.jar的Java項目欄創建的。
所以問題是,在分發其子文件夾lib中包含bar.jar的Foo版本時,是否也需要包含httpclient-4.5.jar?
更新: 我想通了,真正的問題,我想問的是關於傳遞依賴。根據https://maven.apache.org/guides/introduction/introduction-to-dependency-mechanism.html#Transitive_Dependencies,Maven能夠發現自己的lib需要的lib(依賴)。
在我的情況是,Maven可以找出foo取決於酒吧和酒吧取決於httpclient-4.5.jar,它會抓取httpclient-4.5.jar到Project Foo的Maven Dependencies列表。
這適用於我項目中的大多數依賴項,即依賴項的依賴項也出現在我的Maven依賴項中。但是,有一個依賴項(bar.jar),Maven不會檢索它的依賴項(httpclient-4.5.jar)。這是我現在的關鍵問題。
感謝您舉例說明。我更新了我的問題。你認爲maven-assembly-plugin仍然適合嗎? – Lee
實際上,只有當問題出現在包含所有依賴關係的分佈式獨立可執行程序包時才適用。閱讀你的更新這個問題是另一回事。 – johnnynemonic
嘗試觀察de bar.jar pom.xml並驗證httpclient-4工件依賴關係是如何聲明的,驗證依賴關係之間的某種衝突或bar.jar pom中的聲明。xml與範圍傳遞也是一致的,或者不被排除等等。否則,總是可以包含httpclient-4神器作爲依賴在foo.jar中的pom.xml,在這種情況下必須出現Maven依賴關係 – johnnynemonic