Maven多层依赖传递难题:合并内部包后如何实现外部依赖传递?
内部包合并交付与依赖传递需求
我们有多个内部包需要合并交付给客户,同时要保留外部依赖的传递性,具体依赖树如下:
internal.lib1 -> internal.lib2 -> dependency-A -> dependency-B -> dependency-C -> internal.lib3 -> dependency-D -> dependency-E -> dependency-F
我们只希望向客户交付internal.lib1.jar这一个Jar包,原因如下:
- internal.lib2、internal.lib3不方便部署到中央仓库
- 不想每次交付三个独立的Jar包(internal.lib1.jar、internal.lib2.jar、internal.lib3.jar)
目前我们尝试的打包方式是:将internal.lib2和internal.lib3解压到internal.lib1的classes目录,同时在internal.lib1的pom文件中将internal.lib2、internal.lib3设置为provided。这种方式确实能生成包含internal.lib2和internal.lib3的单个Jar包,但因为internal.lib2、internal.lib3被标记为provided,它们的依赖无法被客户端感知,导致依赖传递失效。
我们的核心需求是:基于上述依赖树,仅交付一个仅包含内部类的Jar包,同时确保外部依赖能正常传递。最终客户端引用我们的库时,依赖树应如下:
customer-service ->internal.lib1(internal.lib2&internal.lib3) -> dependency-A -> dependency-B -> dependency-C -> dependency-D -> dependency-E -> dependency-F
内容的提问来源于stack exchange,提问作者Kerwin Bryant
相关产品推荐
相关产品推荐

