● 依賴傳遞:
添加依賴的jar包如果還依賴其他jar包,則在添加時會一起引入;
● 依賴沖突:
Base-project由3個子項目組成,A-project依賴Tools.jar 1.0版本,C-project依賴Tools.jar 2.0版本,根據依賴傳遞機制,Base-project將同時依賴Tools.jar兩個版本,但這造成了沖突。
根據路徑最近獲勝策略,該項目最終依賴Tools.jar 1.0,導致C-project無法調用getAll方法從而報錯,因此我們要手動選擇一個適合項目的版本。
(Maven模塊化開發項目依賴關系)
● 解決依賴沖突的辦法:
① 直接聲明:直接添加Tools.jar 2.0依賴;
② 排除:使用<dependency>標簽中的<exclusions>標簽排除A-project中的Tools.jar 1.0依賴;
③ 依賴管理,版本鎖定:<dependencyManagement>
<dependencyManagement>是依賴管理,該標簽下添加的<dependencies>可以聲明依賴,但是不會引入jar包;
只有聲明在<project>標簽下<dependencies>中的依賴才會被引用到項目中 在<dependencyManagement>下添加jar包坐標后,<project>標簽下<dependencies>標簽的版本號可以忽略不寫; < properties>標簽可以自定義版本號,用el表達式賦值給<version>標簽; 統一管理jar包版本,修改方便;