Maven之dependencyManagement
1. 父項目的dependencyManagement
最開始,知道dependencyManagement是管理jar包版本的,如果在父項目中的該節(jié)點下聲明了包的版本,子項目中在Dependencies中引用該包時就不需要聲明版本了,這樣保證多個子項目能夠使用相同的包版本。
dependencyManagement不實際下載jar包,只會聲明包的版本。如果Dependencies中聲明了包的版本,則會覆蓋dependencyManagement聲明的版本。
2. 解決包沖突
但是,除了上面簡單理解的dependencyManagement,其實它更強大的功能是解決包沖突,很多教程也這么說,但是我一直以為是第一種情況那樣,不用再聲明包版本了,達(dá)到所有子項目包版本相同的目的,實際上,一個項目中,同時使用dependencyManagement和Dependencies,基本上就告別了使用exclusions一個一個排除包來解決包沖突的方法,這種方式以前并沒有注意到,或者很多教程沒有特別強調(diào),但是這個才是dependencyManagement的方便之處。
起因是我使用如下jar包:
其中,spring-data-redis引入spring版本是4.1.9, 而activiti-spring引入的spring版本是4.1.5.
如下圖所示:
兩者引入的spring組件的版本各部相同,導(dǎo)致程序無法運行,此時第一反應(yīng)是使用exclusions一個個排除沖突的jar包,操作十分麻煩,突然想到dependencyManagement,如果我把沖突的包放在其中,聲明了版本,會怎么樣,如下:
<dependencyManagement><dependencies><dependency><groupId>org.springframework</groupId><artifactId>spring-core</artifactId><version>${spring.vserion}</version></dependency><dependency><groupId>org.springframework</groupId><artifactId>spring-context</artifactId><version>${spring.vserion}</version></dependency><dependency><groupId>org.springframework</groupId><artifactId>spring-aop</artifactId><version>${spring.vserion}</version></dependency><dependency><groupId>org.springframework</groupId><artifactId>spring-tx</artifactId><version>${spring.vserion}</version></dependency><dependency><groupId>org.springframework</groupId><artifactId>spring-context-support</artifactId><version>${spring.vserion}</version></dependency></dependencies> </dependencyManagement><dependency><groupId>org.springframework.data</groupId><artifactId>spring-data-redis</artifactId><version>${spring.redis.version}</version> </dependency> ... <dependency><groupId>org.activiti</groupId><artifactId>activiti-spring</artifactId><version>${activitti.version}</version> </dependency>${spring.vserion}=4.1.5.RELEASE, 此時在dependencies之上,我添加了dependencyManagement,并且將所有沖突的jar包都聲明了我想要的版本號,結(jié)果如下:
至此,可以告別exclusions了。
總結(jié)
以上是生活随笔為你收集整理的Maven之dependencyManagement的全部內(nèi)容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: Maven dependency plu
- 下一篇: Django中模型类 属性-学习笔记