maven 中的pom中的 dependencyManagement 和 dependencies


參考: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,所有聲明在父項目中 dependencies 里的依賴都會被子項目自動引入,並默認被所有的子項目繼承。
區別
dependencies 即使在子項目中不寫該依賴項,那么子項目仍然會從父項目中繼承該依賴項(全部繼承)
dependencyManagement 里只是聲明依賴,並不實現引入,因此子項目需要顯示的聲明需要用的依賴。如果不在子項目中聲明依賴,是不會從父項目中繼承下來的;只有在子項目中寫了該依賴項,並且沒有指定具體版本,才會從父項目中繼承該項,並且 version 和 scope 都讀取自父 pom; 另外如果子項目中指定了版本號,那么會使用子項目中指定的jar版本。


           

 

dependencies即使在子項目中不寫該依賴項,那么子項目仍然會從父項目中繼承該依賴項(全部繼承)

         dependencyManagement里只是聲明依賴,並不實現引入,因此子項目需要顯示的聲明需要用的依賴。如果不在子項目中聲明依賴,是不會從父項目中繼承下來的;只有在子項目中寫了該依賴項,並且沒有指定具體版本,才會從父項目中繼承該項,並且version和scope都讀取自父pom;另外如果子項目中指定了版本號,那么會使用子項目中指定的jar版本。


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM