idea maven helper插件 解決版本依賴沖突
安裝Maven Helper插件,就可以打開pom文件的Dependency Analyzer視圖,視圖三個選項分別是Conflicts(沖突)、All Dependencies as List(列表形式查看所有依賴)、All Dependencies as Tree(樹結構查看所有依賴)。頁面還支持搜索。很方便!
1、安裝

2、helper使用
打開項目中的pom文件,使用Dependency Analyzer視圖


Conflicts(查看沖突)
All Dependencies as List(列表形式查看所有依賴)
All Dependencies as Tree(樹形式查看所有依賴)
當前界面上還提供搜索功能 方便使用
conflicts的閱讀順序(從下向上看)
從圖中可以看出有哪些jar存在沖突,存在沖突的情況下最終采用了哪個依賴的版本。標紅的就是沖突版本,白色的是當前的解析版本。這個選項,需要從下向上看;
并且這里是:A依賴于B,B依賴于C,C依賴D。
如下圖:沖突的jar包就是jackson,swagger通過web、json最終依賴到jackson。

3. 解決依賴沖突
點擊【Conflicts】,從圖中可以看到那些jar包沖突。標紅的就是沖突版本,白色的是當前的解析版本。
如果有多個依賴的版本發生了沖突,只需要使用exclusion關鍵字對相關依賴進行排除就行。
這里可以看到 spirng-beans-4.2.4.release和spring-beans-5.0.12沖突,這里舍棄spirng-beans-4.2.4.release這個版本,保留spring-beans-5.0.12 這個版本。使用 exclusion 排除定位到的沖突包。

可以看到最終選擇了【4.2.4】版本,如果我要使用【5.0.12】版本。那么只需要吧【4.2.4】給排除掉。點擊【Exclude】進行排除即可。

再次點擊【conflicts】,或者點擊【Refresh UI】進行刷新

除了exclude,還有如下方法:
第一聲明者優先原則
誰先定義的就用誰的傳遞依賴,即在pom.xml文件自上而下。
因此如果要用5.2.0版本的spring core包,可以改成如下聲明
<dependencies>
<dependency>
<groupId>org.springframework</groupId>
<artifactId>spring-aop</artifactId>
<version>5.2.0.RELEASE</version>
</dependency>
<dependency>
<groupId>org.springframework</groupId>
<artifactId>spring-context</artifactId>
<version>5.2.7.RELEASE</version>
</dependency>
</dependencies>
鎖定版本(推薦)
dependencyManagement可以統一管理項目的版本號,導入依賴的時候就會直接使用我們鎖定的依賴版本。
(1)在父項目的pom中進行約定
<dependencyManagement>
<dependencies>
<dependency>
<groupId>org.springframework</groupId>
<artifactId>spring-core</artifactId>
<version>5.2.0.RELEASE</version>
</dependency>
</dependencies>
</dependencyManagement>
這樣在后續的子工程中,就不用寫版本號了,直接就沿用父項目的版本號
(2)在同一個項目pom中,既約定版本號,又導入依賴
<dependencyManagement>
<dependencies>
<dependency>
<groupId>org.springframework</groupId>
<artifactId>spring-core</artifactId>
<version>5.2.0.RELEASE</version>
</dependency>
</dependencies>
</dependencyManagement>
<dependencies>
<dependency>
<groupId>org.springframework</groupId>
<artifactId>spring-context</artifactId>
<version>5.2.7.RELEASE</version>
</dependency>
<dependency>
<groupId>org.springframework</groupId>
<artifactId>spring-aop</artifactId>
<version>5.2.0.RELEASE</version>
</dependency>
</dependencies>
dependencyManagement只是鎖定版本并不自動實現引入,因此子項目需要顯示的聲明需要用的依賴

浙公網安備 33010602011771號