[英]How to automatically reuse dependency versions in a multi-module Maven project?
在一个模块中,我使用spring-boot-starter-activemq:2.07.RELEASE
,它取决于activemq-broker:5.15.8
,它依赖于guava:18.0
。
在另一个模块中,我想使用番石榴,所以我必须使用:
<dependency>
<groupId>com.google.guava</groupId>
<artifactId>guava</artifactId>
<version>18.0</version>
</dependency>
如果我在我的pom.xml
使用更高版本,则由于依赖关系中介的最近定义规则, activemq-broker
也将使用此版本(请参阅依赖关系机制简介 )
我不想提供与activemq-broker
提出的不同版本的Guava。 因此,为了同步版本,每次有Spring Boot升级时,我都需要手动检查版本以便同步它们。
我使用activemq-broker
和guava
作为示例,但我的问题更为通用:如何自动将依赖版本从一个模块重用到另一个模块?
我会为我的项目定义一个父项 ,在那里将处理依赖项管理。(你可能已经有了这个)。 在父依赖关系管理部分,我将导入 activemq-parent的依赖关系管理。 这样您就可以只定义依赖项,而不在子项中使用显式版本。
您还可以让父级继承自spring-boot-dependencies以获取版本属性。 (在此示例中,从此获取activemq.version)
示例:父pom
<parent>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-dependencies</artifactId>
<version>2.1.1.RELEASE</version>
</parent>
<dependencyManagement>
<dependencies>
<dependency>
<groupId>org.apache.activemq</groupId>
<artifactId>activemq-parent</artifactId>
<version>${activemq.version}</version>
<type>pom</type>
<scope>import</scope>
</dependency>
.....
</dependencyManagement>
如果您的父级不继承spring-boot-dependencies,则必须为activemq-parent
编写特定版本而不是${activemq.version}
在这之后的孩子
<dependency>
<groupId>com.google.guava</groupId>
<artifactId>guava</artifactId>
</dependency>
番石榴的版本与activemq-parent
相同。 (因为那里定义了)
在模块中你是definign依赖
activemq-broker:5.15.8
也可以解决并添加你喜欢使用哪种版本的番石榴,而其他版本的番石榴可能来自祖父母pom。
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.