我有一个多模块的库,如下所示:
pom.xml
- module1 (results in jar1)
- module2 (results in jar2)
我还有另一个应用程序,其中我需要这两个JAR作为依赖项.我可以使用模块1和模块2的artifactId添加两个依赖项.
有没有办法向父POM添加依赖项,以便同时添加两个JAR.
我有一个多模块的库,如下所示:
pom.xml
- module1 (results in jar1)
- module2 (results in jar2)
我还有另一个应用程序,其中我需要这两个JAR作为依赖项.我可以使用模块1和模块2的artifactId添加两个依赖项.
有没有办法向父POM添加依赖项,以便同时添加两个JAR.
您不能将依赖项直接添加到父POM中以将子模块作为依赖项引入.父POM通常用于管理子模块之间的共享配置,并且不包括或引用其子模块产生的构件.
处理这种情况的通常方法是,像您已经做过的那样,将每个模块作为单独的依赖项添加到应用程序POM中.
但是,如果您正在try 简化依赖项管理,则有几个替代解决方案:
Create an uber or shaded JAR:使用Maven的Shade插件或类似工具将两个模块组合成一个JAR文件.这个新的构件可以用作依赖项,从两个模块引入所有类.然而,这可能会导致与其他依赖项的冲突,对于许多情况来说,这是一个重量级的解决方案.
Create a BOM (Bill Of Materials): BOM是一种特殊的POM,用于控制项目依赖项的版本,并提供定义和更新这些版本的中心位置.BOM可以导入到其他项目中,以确保跨多个模块或项目的依赖项版本一致.
Aggregate artifact:创建一个依赖于所有其他模块的新模块,然后依赖于该新模块.只有当模块具有紧密耦合的关系时,这才真正有意义,否则,对不相关的构件进行分组并不是一个很好的实践.
请记住,正确的解决方案取决于您的用例和项目的复杂性.您必须确保您 Select 的解决方案不会导致其他问题,例如版本冲突或不必要的大型构件. #chat gpt