1.dependencymanagement 應用場景
maven 使用dependencymanagement 元素來提供了一種管理依賴版本号的方式,通常會在一個組織或者項目的最頂層的pom中看到dependencymanagement 元素,在pom.xml 中使用dependencymanagement 元素能讓所有子項目中引用一個依賴而不用顯式的列出版本号。maven 會沿着父子層次向上走,直到找到一個擁有dependencymanagement 元素的項目,然後它就會使用在這個dependencymanagement 元素中指定的版本号。
在 pom 中指明 dependency management 元素的方式 maven 結合項目繼承來管理依賴,這樣做的好處就是:如果有多個子項目都引用依賴項的同一版本,確定應用的各個項目的依賴項和版本一緻,才能保證測試的和釋出的是相同的成果,是以,應在頂層的 pom 中定義共同的依賴關系。同時可以避免在每個使用的子項目裡都聲明一個版本号,這樣當想更新或切換到另一個版本時,隻需要在頂層父容器裡更新,而不需要一個一個子項目的修改;另外如果某個子項目需要另外的一個版本,隻需要在dependencies中聲明version即可。
2.dependencymanagement和dependencies的差別
dependencies,即使在子項目中不寫該依賴項,那麼子項目仍然會從父項目中繼承該依賴項。dependencymanagement裡隻是聲明依賴,并不實作引入,是以子項目需要顯式的聲明需要用的依賴。如果在子項目中不寫該依賴項,那麼子項目中是不會從父項目繼承該依賴項的;隻有在子項目中寫了該依賴項,并且沒有指定具體版本,才會從父項目中繼承該項,并且version 和 scope 都讀取自父pom。
3. pom.xml中變量的使用(便于維護)
一 問題闡述
在pom.xml中添加依賴時文法如下
<dependency>
<groupid>org.springframework</groupid>
<artifactid>spring-core</artifactid>
<version>1.2.6</version>
</dependency>
<artifactid>spring-aop</artifactid>
以上内容沒錯,但有這樣一個問題,在spring的依賴中,我們需要引用一系列版本的spring,如版本1.2.6,每次都寫不利于維護。
二 解決辦法
在pom.xml定義properties标簽
<properties>
<project.build.sourceencoding>utf-8</project.build.sourceencoding>
<spring.version>1.2.6</spring.version>
<developer.organization>xxx</developer.organization>
</properties>
以上内容就改成了
<version>${spring.version}</version>
<version>${spring.version}</version>
維護的時候隻需要修改properties标簽,非常清晰明了。