Maven中的DependencyManagement和Dependencies

本文轉自:點擊打開鏈接



這裏介紹一個在父項目中的根結點中聲明dependencyManagement和dependencies的區別

dependencyManagement

Maven 使用dependencyManagement 元素來提供了一種管理依賴版本號的方式。通常會在一個組織或者項目的最頂層的父POM 中看到dependencyManagement 元素。使用pom.xml 中的dependencyManagement 元素能讓
所有在子項目中引用一個依賴而不用顯式的列出版本號。Maven 會沿着父子層次向上走,直到找到一個擁有dependencyManagement 元素的項目,然後它就會使用在這個dependencyManagement 元素中指定的版本號。

 

例如在父項目裏:

Xml代碼  收藏代碼
  1. <dependencyManagement>  
  2. <dependencies>  
  3. <dependency>  
  4. <groupId>mysql</groupId>  
  5. <artifactId>mysql-connector-java</artifactId>  
  6. <version>5.1.2</version>  
  7. </dependency>  
  8. ...  
  9. <dependencies>  
  10. </dependencyManagement>  

然後在子項目裏就可以添加mysql-connector時可以不指定版本號,例如:

 

Xml代碼  收藏代碼
  1. <dependencies>  
  2. <dependency>  
  3. <groupId>mysql</groupId>  
  4. <artifactId>mysql-connector-java</artifactId>  
  5. </dependency>  
  6. </dependencies>  

這樣做的好處就是:如果有多個子項目都引用同一樣依賴,則可以避免在每個使用的子項目裏都聲明一個版本號,這樣當想升級或切換到另一個版本時,只需要在頂層父容器裏更新,而不需要一個一個子項目的修改 ;另外如果某個子項目需要另外的一個版本,只需要聲明version就可。

 

dependencyManagement裏只是聲明依賴,並不實現引入,因此子項目需要顯式的聲明需要用的依賴。

dependencies

相對於dependencyManagement,所有聲明在dependencies裏的依賴都會自動引入,並默認被所有的子項目繼承。

 

classifier

如果你要發佈同樣的代碼,但是由於技術原因需要生成兩個單獨的構件,你就要使用一個分類器(classifier)。例如,如果你想要構建兩個單獨的構件成JAR,一個使用Java 1.4 編譯器,另一個使用Java 6 編譯器,你就可以使用分類器
來生成兩個單獨的JAR構件,它們有同樣的groupId:artifactId:version組合。如果你的項目使用本地擴展類庫,你可以使用分類器爲每一個目標平臺生成一個構件。分類器常用於打包構件的源碼,JavaDoc 或者二進制集合。


發佈了30 篇原創文章 · 獲贊 27 · 訪問量 67萬+
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章