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