有時候我們對 dependencies 和 dependencyManagement 可能會有點暈。
我們簡單來說這個就常考慮在 parent pom 中定義的情況。
簡單來說就是
dependencyManagement管版本,
dependencies管依賴。
dependencies
所有在 dependencies 中定義的依賴都會被在子項目中自動引入,并被子項目繼承。
dependencyManagement
dependencyManagement 提供的是版本号的管理方式。
舉個常用的例子:
如果我們在 parent pom 中定義了:
<dependency>
<groupId>org.junit.jupiter</groupId>
<artifactId>junit-jupiter-engine</artifactId>
<version>5.6.1</version>
<scope>test</scope>
</dependency>
那麼在子 pom 中,就不需要重新定義
<artifactId>junit-jupiter-engine</artifactId>
的版本号了,子項目會到父項目中去找 junit-jupiter-engine 的版本号。當然你也可以在子項目中定義 junit-jupiter-engine 的版本号。
這個允許你來選擇與父版本不同的版本号。
差別和使用
如果你想定義一個 jar 或者 Package 在所有子項目都使用的話,你需要使用 dependencies 來進行定義。這樣所有你在 dependencies 中定義的 Package 将會自動被導入到子項目中。
dependencyManagement隻是聲明依賴,并不實際導入 Package。是以在
dependencyManagement 中聲明的 Package 還必須在子項目中再聲明一次。
https://www.ossez.com/t/maven-dependencies-dependencymanagement/578