我有一个多模块的库,如下所示:

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

Java相关问答推荐

OpenRewriter-如何替换连锁/流畅方法调用中的方法?

LocalTime解析截断时间的第二个值

试图弄清楚资源未能在我的Android应用程序中调用关闭警告

在for—each循环中的AnimationTimer中的if语句'

Java中是否有某种类型的池可以避免重复最近的算术运算?

如何使用Maven和Spring Boot将构建时初始化、跟踪类初始化正确传递到本机编译

使用GridBagLayout正确渲染

在Spring Boot应用程序中导致";MediaTypeNotSupportdException&qot;的映像上载

第三方Jar pom.xml

Java Mooc.fi Part 12_01.Hideout -返回和删除方法

如何从日期中截取时间并将其传递给组件?

为什么我的回收视图会显示重复的列表?

在Java 15应用程序中运行Java脚本和Python代码

无法将GSON导入到我的JavaFX Maven项目

Spring Framework6.1中引入的新RestClient是否有适合于测试的变体,就像RestTemplate和TestRestTemplate一样?

Spring Validator批注不起作用

Oracle中从JSON中提取和插入数据

没有Tomcat,IntelliJ如何在本地运行API?

循环不起作用只有第一个元素重复

未调用OnBackPressedCallback-Activitiy立即终止