java如何在多模块Maven项目中自动重用依赖项版本?
在一个模块中,我使用依赖于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
也将使用此版本,因为依赖项中介的最近定义规则(请参见Introduction to the Dependency Mechanism)
我不想提供与activemq-broker
所要求的不同版本的番石榴。所以为了同步版本,每次有Spring引导升级,我需要手动检查版本以同步它们
我以activemq-broker
和guava
为例,但我的问题更一般:如何将依赖项版本从一个模块自动重用到另一个模块
# 1 楼答案
在定义依赖关系的模块中
此外,还可以定义并添加您喜欢使用的番石榴版本,而其他人可以继承其他版本的番石榴可能来自祖父母pom
# 2 楼答案
我将为我的项目定义一个parent,其中将处理依赖关系管理。(你可能已经有了这个)。在家长依赖关系管理部分,我将import依赖关系管理activemq-parent。这样,您就可以定义依赖项,而无需在child中定义明确的版本
此外,您还可以让父级继承spring启动依赖项以获取版本属性。(在本例中,activemq.version是从中提取的)
示例:父pom
如果您的父级没有从spring启动依赖项继承,那么您必须为
activemq-parent
编写特定的版本,而不是${activemq.version}
在这之后在孩子身上
番石榴的版本将与
activemq-parent
相同。(因为它是在那里定义的)