maven 版本如何工作,无法更新 ojdbc8 版本

how maven version working, can't update ojdbc8 version

示例代码:
https://github.com/yszzu1/mvn-version-test

问题:

1。为什么管理模块总是 使用 ojdbc8 19.3.0.0 ?

# mvn dependency:tree

[INFO] --- maven-dependency-plugin:3.1.2:tree (default-cli) @ admin-module ---
[INFO] org.example:admin-module:jar:3.12.0
[INFO] +- org.example:db-module:jar:3.12.0:compile
[INFO] |  \- com.oracle.database.jdbc:ojdbc8:jar:19.3.0.0:compile

我们可以看到 db 模块正在使用 19.9.0.0

2。即使在使用

升级 db-module pom.xml 之后
<dependency>
    <groupId>com.oracle.database.jdbc</groupId>
    <artifactId>ojdbc8</artifactId>
    <version>21.1.0.0</version>
</dependency>

,管理模块 mvn dependency:tree 仍然显示 19.3.0.0

mvn & windows & JVM 版本:

# mvn --version
Apache Maven 3.8.5 (3599d3414f046de2324203b78ddcf9b5e4388aa0)
Maven home: C:\Users\shuayan\Documents\open\apache-maven-3.8.5
Java version: 1.8.0_321, vendor: Oracle Corporation, runtime: C:\Program Files\Java\jdk1.8.0_321\jre
Default locale: en_US, platform encoding: Cp1252
OS name: "windows 11", version: "10.0", arch: "amd64", family: "windows" 

顺便说一句:我已经阅读了这两个 wiki
https://www.mojohaus.org/versions-maven-plugin/faq.html https://docs.oracle.com/middleware/1212/core/MAVEN/maven_version.htm#MAVEN401

这就是依赖管理在 maven 中的工作方式。

  1. 您已经为 db-module 定义了直接的 ojdbc8 依赖关系,它确实按预期工作
  2. admin-module 情况“有点不同”:
  • 它直接依赖于db-module,ojdbc8现在是一个传递依赖
  • 它继承了spring-boot-starter-parent的ojdbc8版本(实际上是spring-boot-dependencies)

如果您真的想使用 spring-boot-starter-parent 作为父项,您需要按以下方式配置您的项目:

/pom.xml:

    <properties>
        ...
        <ojdbc.version>21.1.0.0</ojdbc.version>
        <oracle-database.version>21.1.0.0</oracle-database.version>
        ...
    </properties>

/db-module/pom.xml:

    <dependencies>
        <dependency>
            <groupId>com.oracle.database.jdbc</groupId>
            <artifactId>ojdbc8</artifactId>
            <!-- omit version information -->
        </dependency>
    </dependencies>