在一个模块中,我使用取决于spring-boot-starter-activemq:2.07.RELEASE
和activemq-broker:5.15.8
的{{1}}。
在另一个模块中,我想使用番石榴,所以我必须使用:
guava:18.0
如果我在<dependency>
<groupId>com.google.guava</groupId>
<artifactId>guava</artifactId>
<version>18.0</version>
</dependency>
中使用更高版本,则pom.xml
也将使用该版本,因为依赖中介的定义规则最近(请参见Introduction to the Dependency Mechanism)
我不想提供与activemq-broker
要求的版本不同的Guava版本。因此,为了同步版本,每次进行Spring Boot升级时,我都需要手动检查版本以使其同步。
我以activemq-broker
和activemq-broker
为例,但我的问题更笼统:如何将依赖版本从一个模块自动重用到另一个模块中?
答案 0 :(得分:2)
我将为我的项目定义一个parent,将在其中处理依赖项管理。(您可能已经拥有了)。在父母依赖性管理部分,我将import的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.version}
写特定版本而不是activemq-parent
在孩子之后
<dependency>
<groupId>com.google.guava</groupId>
<artifactId>guava</artifactId>
</dependency>
番石榴的版本将与activemq-parent
相同。 (因为它是在那里定义的)
答案 1 :(得分:-1)
在您具有明确依赖关系的模块中
activemq-broker:5.15.8
还取消定义并添加您要使用的任何版本的番石榴,而其他人可以继承其他版本的番石榴可能来自祖父母pom。