pom.xml中parent和dependency及dependencyManagement


parent和dependency的區別:

parent只能繼承pom.xml中配置的依賴。

通過<parent>引用的項目A,
可以使用A項目中<dependency>中依賴的StringUtils的方法,
但是不能調用A項目中自己定義的類和方法,
C項目中通過<dependency>依賴的A,兩者卻都可以調用。

 

parent:將需要依賴的jar包放到一個模塊中,然后使用parent來標識依賴包,
方便版本修改,只需要修改模塊中版本,parent標記中可以不用版本號。

有兩個web項目A、B,一個java項目C
它們都需要用到同一個jar包:common.jar。
如果分別在三個項目的pom文件中定義各自對common.jar的依賴,
那么當common.jar的版本發生變化時,
三個項目的pom文件都要改,項目越多要改的地方就越多,很麻煩。
這時候就需要用到parent標簽, 我們創建一個parent項目,
打包類型為pom,parent項目中不存放任何代碼,
只是管理多個項目之間公共的依賴。
在parent項目的pom文件中定義對common.jar的依賴,
ABC三個子項目中只需要定義<parent></parent>,
parent標簽中寫上parent項目的pom坐標就可以引用到common.jar了。

dependency及dependencyManagement區別:

1.在同一個pom文件下,
如果<dependencies>和<dependencyManagement>中都對該jar做了依賴,
以<dependencies>的為准,優先級高於<dependencyManagement>。
若前者沒有對其依賴,而后者對其有依賴,則以后者為准。<dependencyManagement>里只是聲明依賴,並不實現引入.

2.在不同的pom文件中,
存在父子相互依賴關系的,
父項目的pom中<dependencyManagement>中對該jar做了依賴,
而子項目中<dependencies>又依賴了該jar,
如果子項目中沒有指定<version>和<scope>,
則繼承父項目中該jar的<version>和<scope>。
如果子項目中指定了<version>和<scope>,以子項目的為准。

 

dependencyManagement:相當於提前聲明一個依賴,但可以被重寫

有一個springmvc.jar,只有AB兩個web項目需要,
C項目是java項目不需要,那么又要怎么去依賴。
如果AB中分別定義對springmvc.jar的依賴,
當springmvc.jar版本變化時修改起來又會很麻煩。
解決辦法是在parent項目的pom文件中使用
<dependencyManagement></dependencyManagement>
將springmvc.jar管理起來,
如果有哪個子項目要用,那么子項目在自己的pom文件中使用

 


免責聲明!

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



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