1. 程式人生 > 實用技巧 >Maven高階,依賴傳遞和解決衝突,版本鎖定,提取統一版本號

Maven高階,依賴傳遞和解決衝突,版本鎖定,提取統一版本號

一、依賴傳遞衝突解決

什麼是依賴?

在maven的pom檔案中新增三方庫座標,即引入三方依賴。

依賴傳遞

專案依賴了A,A依賴了B,專案自動依賴了B

依賴衝突

專案依賴了A和B,A 依賴了C-1.1、D-1.1, B依賴了C-1.2、D-1.2,E-1.2。此時C、D庫存在版本衝突

解決衝突

紅線代表依賴被優化(失效)

顯示紅色實線的代表衝突。紅色虛線,告訴你同一個jar都在哪裡被多次引用了。

二、maven自帶調優原則

根據三方庫匯入順序,自動優化jar包

自動優化原則有兩條

第一宣告者優先: 跟匯入依賴的順序有關,先匯入的優先順序更高

第二路徑近者優先,路徑指的是依賴關係圖中的位置

三、排除依賴

此時有重複依賴,(重複不一定衝突,版本不同會衝突

我們想排除jdbc包下的core依賴使用程式碼

<!--spring的jdbc包-->
<dependency>
     <groupId>org.springframework</groupId>
     <artifactId>spring-jdbc</artifactId>
     <version>5.1.12.RELEASE</version>
     <exclusions>
         <
exclusion> <artifactId>spring-core</artifactId> <groupId>org.springframework</groupId> </exclusion> </exclusions> </dependency>

四、鎖定版本

如果多個庫,交叉匯入了同一個庫,意思就是多個相同依賴的版本不同,此時我們可以通過dependencyManagement鎖定庫的版本。

<dependencyManagement
> <dependencies> <dependency> <groupId>org.springframework</groupId> <artifactId>spring-jdbc</artifactId> <version>5.2.5.RELEASE</version> </dependency> </dependencies> </dependencyManagement> <dependencies> <!--spring的jdbc包 此時匯入被鎖定的包,不需要寫版本號,若寫了就以就近原則下載 --> <dependency> <groupId>org.springframework</groupId> <artifactId>spring-jdbc</artifactId> </dependency> </dependencies>

五、提取版本號

選中版本,ctrl+alt+v,提取版本號,自動放入properties中