Maven——为什么依赖关系版本没有被覆盖



我的项目依赖于spring-boot-starter数据mongodb,我只想升级mongodb驱动程序的版本。这是我的pom:

<project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd">
<modelVersion>4.0.0</modelVersion>
<groupId>com.demo</groupId>
<artifactId>demo</artifactId>
<version>0.0.1-SNAPSHOT</version>
<packaging>jar</packaging>
<parent>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-parent</artifactId>
<version>2.5.9</version>
<relativePath /> <!-- lookup parent from repository -->
</parent>
<properties>
<project.build.sourceEncoding>UTF-8</project.build.sourceEncoding>
<project.reporting.outputEncoding>UTF-8</project.reporting.outputEncoding>
<java.version>11</java.version>
</properties>
<dependencies>
<dependency>
<groupId>org.mongodb</groupId>
<artifactId>mongodb-driver-sync</artifactId>
<version>4.5.0</version>
</dependency>

<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-data-mongodb</artifactId>
</dependency>
</dependencies>
</project>

这是最后一个依赖树:

[INFO] --- maven-dependency-plugin:3.1.2:tree (default-cli) @ demo ---
[INFO] com.demo:demo:jar:0.0.1-SNAPSHOT
[INFO] +- org.mongodb:mongodb-driver-sync:jar:4.5.0:compile
[INFO] |  +- org.mongodb:bson:jar:4.2.3:compile
[INFO] |  - org.mongodb:mongodb-driver-core:jar:4.2.3:compile
[INFO] - org.springframework.boot:spring-boot-starter-data-mongodb:jar:2.5.9:compile
[INFO]    +- org.springframework.boot:spring-boot-starter:jar:2.5.9:compile
[INFO]    |  +- org.springframework.boot:spring-boot:jar:2.5.9:compile
[INFO]    |  +- org.springframework.boot:spring-boot-autoconfigure:jar:2.5.9:compile
[INFO]    |  +- org.springframework.boot:spring-boot-starter-logging:jar:2.5.9:compile
[INFO]    |  |  +- ch.qos.logback:logback-classic:jar:1.2.10:compile
[INFO]    |  |  |  - ch.qos.logback:logback-core:jar:1.2.10:compile
[INFO]    |  |  +- org.apache.logging.log4j:log4j-to-slf4j:jar:2.17.1:compile
[INFO]    |  |  |  - org.apache.logging.log4j:log4j-api:jar:2.17.1:compile
[INFO]    |  |  - org.slf4j:jul-to-slf4j:jar:1.7.33:compile
[INFO]    |  +- jakarta.annotation:jakarta.annotation-api:jar:1.3.5:compile
[INFO]    |  +- org.springframework:spring-core:jar:5.3.15:compile
[INFO]    |  |  - org.springframework:spring-jcl:jar:5.3.15:compile
[INFO]    |  - org.yaml:snakeyaml:jar:1.28:compile
[INFO]    - org.springframework.data:spring-data-mongodb:jar:3.2.8:compile
[INFO]       +- org.springframework:spring-tx:jar:5.3.15:compile
[INFO]       +- org.springframework:spring-context:jar:5.3.15:compile
[INFO]       |  - org.springframework:spring-aop:jar:5.3.15:compile
[INFO]       +- org.springframework:spring-beans:jar:5.3.15:compile
[INFO]       +- org.springframework:spring-expression:jar:5.3.15:compile
[INFO]       +- org.springframework.data:spring-data-commons:jar:2.5.8:compile
[INFO]       - org.slf4j:slf4j-api:jar:1.7.33:compile
[INFO] ------------------------------------------------------------------------

我的问题是为什么bson和mongodb驱动程序核心的版本仍然是4.2.3而不是4.5.0。mongodb驱动程序的同步将取决于bson和mongodb的驱动程序核心,版本为4.5.0。这是mongodb驱动程序同步的pom。

<project>
<groupId>org.mongodb</groupId>
<artifactId>mongodb-driver-sync</artifactId>
<version>4.5.0</version>
<dependencies>
<dependency>
<groupId>org.mongodb</groupId>
<artifactId>bson</artifactId>
<version>4.5.0</version>
<scope>compile</scope>
</dependency>
<dependency>
<groupId>org.mongodb</groupId>
<artifactId>mongodb-driver-core</artifactId>
<version>4.5.0</version>
<scope>compile</scope>
</dependency>
</dependencies>
</project>

因为spring-boot-starter-parent继承自定义的spring-boot-dependencies

<mongodb.version>4.2.3</mongodb.version>
<dependencyManagement>
<!-- ... -->
<dependency>
<groupId>org.mongodb</groupId>
<artifactId>mongodb-driver-sync</artifactId>
<version>${mongodb.version}</version>
</dependency>
<!-- ... -->
</dependencyManagement>

如果你想独立升级,你需要覆盖pom中的属性:

<mongodb.version>4.5.0</mongodb.version>

或者等待SpringBoot2.7.0版本,它将Mongo升级到4.5.0。

最新更新