“Maven中的就近依赖原则”的版本间的差异

来自姬鸿昌的知识库
跳到导航 跳到搜索
(建立内容为“1”的新页面)
 
 
第1行: 第1行:
1
+
当前项目的 pom.xml 继承的依赖如果在父pom中声明了版本,当前项目如果在声明引入依赖时配置了不同的版本,则当前项目的pom.xml中声明的版本生效。
 +
 
 +
示例:
 +
 
 +
=== 当前项目pom.xml ===
 +
<syntaxhighlight lang="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>
 +
……
 +
</syntaxhighlight>
 +
 
 +
 
 +
=== spring-boot-starter-parent 继承的 spring-boot-dependencies pom ===
 +
<syntaxhighlight lang="xml">
 +
……
 +
<properties>
 +
……
 +
<mysql.version>8.0.22</mysql.version>
 +
……
 +
</properties>
 +
……
 +
      <dependency>
 +
        <groupId>mysql</groupId>
 +
        <artifactId>mysql-connector-java</artifactId>
 +
        <version>${mysql.version}</version>
 +
      </dependency>
 +
……
 +
</syntaxhighlight>
 +
 
 +
 
 +
继承过来 mysql-connector-java 版本是 8.0.22,但因为在当前项目中又声明的版本是 8.0.31,则最后生效的还是 8.0.31

2022年12月12日 (一) 06:59的最新版本

当前项目的 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