我有一个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