Maven中的就近依赖原则

来自姬鸿昌的知识库
跳到导航 跳到搜索

当前项目的 pom.xml 继承的依赖如果在父pom中声明了版本,当前项目如果在声明引入依赖时配置了不同的版本,则当前项目的pom.xml中声明的版本生效。

示例:

当前项目pom.xml

<?xml version="1.0" encoding="UTF-8"?>
<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>io.github.jihch</groupId>
    <artifactId>guns-v7.2.4-genrator</artifactId>
    <version>1.0-SNAPSHOT</version>

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

    <dependencies>
……

        <dependency>
            <groupId>mysql</groupId>
            <artifactId>mysql-connector-java</artifactId>
            <version>8.0.31</version>
        </dependency>
……


spring-boot-starter-parent 继承的 spring-boot-dependencies pom

……
<properties>
……
<mysql.version>8.0.22</mysql.version>
……
</properties>
……
      <dependency>
        <groupId>mysql</groupId>
        <artifactId>mysql-connector-java</artifactId>
        <version>${mysql.version}</version>
      </dependency>
……


继承过来 mysql-connector-java 版本是 8.0.22,但因为在当前项目中又声明的版本是 8.0.31,则最后生效的还是 8.0.31