Maven开发笔记(三)—— Maven中dependencies和dependencyManagement
1.dependency簡介
dependency?元素用于定義對其他項目的依賴關系,其中,常見的子元素有:groupId?,?artifactId?,?version?,?type?,?scope?,?systemPath?,?optional?,?classifier?,?exclusions?等。其中,絕大部分元素,我們前面都有介紹過,這里就不一一贅述了。我們這里簡要介紹一下?version?元素的多種表示方式。
version?有如下表示方式
- 1.0?: 非硬性要求,只是一個建議
- [1.0]?: 硬性要求,版本必須為1.0
- (,1.0]?: x <= 1.0
- [1.2,1.3]?: 1.2 <= x <= 1.3
- [1.0,2.0)?:1.0 <= x < 2.0
- [1.5,)?:x >= 1.5
- (,1.0],[1.2,)?: x <= 1.0 or x >= 1.2,多個集合以逗號分隔
- (,1.1),(1.1,)?: 排除1.1版本號的其他版本
2.dependencies和dependencyManagement的區別概述
在?pom.xml?文件中,我們可以看到,dependencies?是?dependency?的父元素,而?dependencyManagement?又是?dependencies?的父元素,而?dependencies?元素的使用情況又分為兩種,一種,dependencies?元素外沒有?dependencyManagement父元素,另一種,dependencies?元素外還存在?dependencyManagement?父元素。當然,兩種使用情況可以在同一?pom.xml文件中共存,因為二者的作用不同。
我們知道?dependency?元素是用來定義本項目對其他項目的依賴關系的。那么,?dependencies?和?dependencyManagement中?dependency?的作用又有什么不同呢?從宏觀上講,dependencies?中的?dependency?元素下聲明的依賴會被引入當前項目,而且在子項目中即使不寫該依賴項,依舊會從父項目中繼承該依賴項(全部繼承),而?dependencyManagement?中的?dependencies?中的?dependency?元素下聲明的依賴不會被引入當前項目,它僅僅是一個聲明,如果在子項目中不寫該依賴項,則不會從父項目中繼承該依賴項,如果子項目真的需要引入該依賴,則在聲明的時候,可以不用指定具體版本號,會自動繼承父項目?dependencyManagement?中聲明的版本號,從而實現了對依賴版本的統一管理。當然,如果子項目需要使用不同于父項目中聲明的版本號,則需要在聲明時指定版本號。
3.dependencyManagement小結
通過?dependencyManagement?元素,可以將項目的依賴關系細節收歸一處,方便管理和升級。然而,我們在享受?dependencyManagement?元素帶來的巨大便利的同時,需要特別注意的是,通過依賴傳遞而被引入的項目依賴的版本(version)和有效范圍(scope)都會受到?dependencyManagement?元素中對應依賴的控制(如果存在對應依賴的話)。例如:項目A需要依賴項目B和項目C,項目A的?dependencyManagement?元素中聲明了項目B的版本為1.0,如果此時項目C也依賴項目B,而且只有項目B的版本大于等于2.0,項目C才能運行。這時候,項目A中引入對項目B的依賴,其版本按照?dependencyManagement?中的聲明為1.0版本,這時候就會導致項目不能正常運行。這一點,需要特別注意。
總結
以上是生活随笔為你收集整理的Maven开发笔记(三)—— Maven中dependencies和dependencyManagement的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: 解决 :sudo:/etc/sudoer
- 下一篇: 从HCNA到HCIE的运营商工程师走过的