【发布时间】:2019-05-19 17:35:26
【问题描述】:
在一个模块中,我使用spring-boot-starter-activemq:2.07.RELEASE,它依赖于activemq-broker:5.15.8,它依赖于guava:18.0。
在另一个模块中,我想使用guava,所以我必须使用:
<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 Boot 升级时,我都需要手动检查版本以便同步它们。
我以activemq-broker 和guava 为例,但我的问题更笼统:如何自动将依赖版本从一个模块重用到另一个模块?
【问题讨论】:
-
您是否尝试按照 pom.xml 中提供的方式设置 guava 依赖项?如果您使用 spring-boot-starter-activemq 作为编译(或运行时)并且 active-mq-broker 和 guava 都是其父级的编译/运行时依赖项,您应该能够通过定义所提供的依赖项来重用它们
-
我也对答案感兴趣。我每次都是手动做的
-
我知道 spring-boot-starter-activemq 依赖是为一个模块定义的,你想在父 pom 中添加 guava 依赖,对吧?因为如果你在简单的模块项目中工作,你不需要声明 guava 依赖,因为依赖是传递的。
-
@jaudo,是的,这是一个多模块项目,我已经更新了我的答案。
-
@Abaddon666
provided定义为indicates you expect the JDK or a container to provide the dependency at runtime.我在编译时需要这些库。
标签: java maven version dependency-management