示例代碼:
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-module 正在使用19.9.0.0
2.即使在升級 db-modulepom.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"
順便說一句:我已經閱讀了這兩個維基
https://www.mojohaus.org/versions-maven-plugin/faq.html
https://docs.oracle.com/middleware/1212/core/MAVEN/maven_version.htm#MAVEN401
uj5u.com熱心網友回復:
這就是依賴管理在 Maven 中的作業方式。
- 您已經為 db-module 定義了直接 ojdbc8 依賴項,它確實按預期作業
- 對于 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 模塊/pom.xml:
<dependencies>
<dependency>
<groupId>com.oracle.database.jdbc</groupId>
<artifactId>ojdbc8</artifactId>
<!-- omit version information -->
</dependency>
</dependencies>
轉載請註明出處,本文鏈接:https://www.uj5u.com/yidong/472445.html
