- Maven 使用dependencyManagement元素來提供了一種管理依賴版本號的方式
- 通常會在一個組織或者項目的最頂層的父pom中看到dependencyManagement元素。
- 使用pom.xml中的dependencyManagement元素能讓所有在子項目中引用一個依賴而不用顯式的列出版本號。
例如在父項目裏:
<dependencyManagement>
<dependencies>
<dependency>
<groupId>mysql</groupId>
<artifactId>mysql-connector-java</artifactId>
<version>5.1.2</version>
</dependency>
...
</dependencies>
<dependencyManagement>
在子項目裏就可以添加mysql-connector時可以不指定版本號,例如
<dependencies>
<dependency>
<groupId>mysql</groupId>
<artifactId>mysql-connector-java</artifactId>
</dependency>
</dependencies>
Maven會沿着父子層次向上走,直到找到一個擁有dependencyManagement元素的項目,然後它就會使用這個dependencyManagement元素中指定的版本號。
這樣做的好處就是:如果有多個子項目都引用同一樣依賴,則可以避免在每個使用的子項目裏都聲明一個版本號,這樣當想升級或者切換到另一個版本時,只需要在頂層父容器裏更新,而不需要一個一個子項目的修改;另外如果某個子項目需要另外的一本版本,只需要申明version即可。
注意:
- dependencyManagement只是聲明依賴,並不實現引入,因此,子項目需要顯式的聲明需要用的依賴。
- 如果不在子項目中聲明依賴,是不會從父項目中繼承下來的;只有在子項目中寫了該依賴項,並且沒有制定具體版本,纔會從父項目中繼承該項,並且version和scope都讀取自父pom;
如果子項目中指定了版本號,那麼會使用子項目中指定的jar版本。