maven提供了dependencyManagement來管理父子模塊的dependency依賴包。
當一個父模塊下有多個子模塊的時候,各個子模塊中有不同的依賴包,但是通常某些子模塊間會引入相同的模塊包,這個時候就出現了重複導入依賴的問題。
那麼解決重複依賴的很好的解決方案就是把子模塊裏相同的依賴提取出來,放到父模塊的pom.xml裏,然後在子模塊裏通過繼承父模塊的pom.xml得到依賴。
但是這個也有個問題,就是如果有5個子模塊,4個子模塊用到了1個相同的依賴,還有1個沒用到怎麼辦?這個沒用到的也根據繼承得到了這個依賴,很顯然這不是我們所希望的。
所以這個時候就由dependencyManagement出馬了。
dependencyManagement用於父模塊中,其中可以配置多個依賴包,如下所示:
<properties>
<xxx.version>3.1.1<xxx.version/>
</properties>
<dependencyManagement>
<dependencies>
<dependency>
<groupId>xxxx</groupId>
<artifactId>xxxxx</artifactId>
<version>${xxx.version}</version>
</dependency>
</dependencies>
......
</dependencyManagement>
其中可以把version提取出來,單獨放到properties中配置,提高了靈活性。
然後在子模塊中,通過在dependencies中正常的導入依賴,但是不聲明version,如下所示:
<dependencies>
<dependency>
<groupId>xxxx</groupId>
<artifactId>xxxxx</artifactId>
</dependency>
</dependencies>
這樣就能通過繼承的方式,把這個依賴和version繼承下來。只有在子模塊中引入的dependency纔會導入子模塊。雖然看起來沒啥區別,但卻有效的解決了問題,提高了靈活性。