參考:maven pom.xml 中 dependencyManagement和dependencies詳解
現在的項目基本上都是使用多module來管理的,這就涉及到一個問題,多module之間如何使用共同的第三方jar,或者說如何減少相同的jar導入的配置。
1. 首先介紹<dependencies>
我們是這里引入了一個jar包之后,這里如果沒有加上version版本號的話,那么maven就會去<dependencyManagement>里找對應groupId和artifactId的jar,如果有就繼承他,如果沒有就會報錯,這時候其實在我們配置的本地倉庫中會真實的下載對應的jar包,這時候所有的子module都會默認繼承這里面所有聲明的jar
2. <dependencyManagement>
這里其實是起到管理依賴jar版本號的作用,一般只會在項目的最頂層的pom.xml中使用到,所有子module如果想要使用到這里面聲明的jar,只需要在子module中添加相應的groupId和artifactId即可,並不需要聲明版本號,需要注意的是這里面只是聲明一個依賴,並不是真實的下載jar,只有在子module中使用到,才會去下載依賴。
2 dependencies 與dependencyManagement 的區別
dependencies即使在子項目中不寫該依賴項,那么子項目仍然會從父項目中繼承該依賴項(全部繼承)
dependencyManagement里只是聲明依賴,並不實現引入,因此子項目需要顯示的聲明需要用的依賴。如果不在子項目中聲明依賴,是不會從父項目中繼承下來的;只有在子項目中寫了該依賴項,並且沒有指定具體版本,才會從父項目中繼承該項,並且version和scope都讀取自父pom;另外如果子項目中指定了版本號,那么會使用子項目中指定的jar版本。