maven:替换传递依赖版本

时间:2021-04-12 14:49:32

标签: spring-boot maven

这是一个 mvn dependency:tree 片段:

...
+- org.springframework.boot:spring-boot-starter-actuator:jar:2.1.12.RELEASE:compile
[INFO] |  +- org.springframework.boot:spring-boot-actuator-autoconfigure:jar:2.1.12.RELEASE:compile
[INFO] |  |  \- org.springframework.boot:spring-boot-actuator:jar:2.1.12.RELEASE:compile
[INFO] |  \- io.micrometer:micrometer-core:jar:1.1.9:compile
...

如您所见,我的项目使用的是 io.micrometer:micrometer-core 的 1.1.9 版。

我想使用这个库的最新版本。

此版本是由于:

<parent>
    <groupId>org.springframework.boot</groupId>
    <artifactId>spring-boot-starter-parent</artifactId>
    <version>2.1.12.RELEASE</version>
</parent>

我无法更改此版本。

有没有办法只用另一个更新的 io.micrometer:micrometer-core:1.1.19 覆盖?

2 个答案:

答案 0 :(得分:0)

是的,只需将依赖项直接添加到您的 POM 中即可:

<dependency>
    <groupId>io.micrometer</groupId>
    <artifactId>micrometer-core</artifactId>
    <version>...</version>  <!-- add latest version here -->
</dependency>

Maven 将解析该版本,因为它遵循“最近的定义”(参见 https://maven.apache.org/guides/introduction/introduction-to-dependency-mechanism.html)。

但是请注意,您应该确保您的版本与 Spring Boot 项目兼容,以防兼容性发生变化。如果升级 Spring Boot 是一种选择,这应该是最好的方法,因为它应该拉取更新版本的千分尺(例如 spring-boot-starter-actuator 版本 2.4.4 使用千分尺 1.6.5:https://repo.maven.apache.org/maven2/org/springframework/boot/spring-boot-starter-actuator/2.4.4/spring-boot-starter-actuator-2.4.4.pom) .

答案 1 :(得分:0)

覆盖传递依赖的最佳方法是将版本放入 <dependencyManagement>

只需添加一个条目

<dependency>
    <groupId>io.micrometer</groupId>
    <artifactId>micrometer-core</artifactId>
    <version>...</version>
</dependency>

到 POM 的 <dependencyManagement> 部分。这将覆盖传递依赖,但不会影响直接依赖。此外,如果此 jar 将来不再是传递依赖项,它将被忽略。