日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當前位置: 首頁 > 编程资源 > 编程问答 >内容正文

编程问答

Maven解决jar包版本冲突

發布時間:2024/8/26 编程问答 39 豆豆
生活随笔 收集整理的這篇文章主要介紹了 Maven解决jar包版本冲突 小編覺得挺不錯的,現在分享給大家,幫大家做個參考.

jar沖突原因:

jar包沖突主要是由于依賴傳遞導致的,不同的jar包依賴同一個不同版本的jar包,導致沖突。可以看下下圖。

B和C都依賴D,但是不同的版本,所以在使用的過程中可能會出現問題。

依賴調解原則(內置解決方法)

maven沖突這是常有的事,所以maven本身提供了一些基本的解決辦法,maven內置了三個基本的原則

原則一:最短路徑優先

原則二:第一聲明者優先

原則三:覆蓋優先

下面的三張圖,最終選擇的都是高版本的jar包

?

這是maven自動做的依賴解決,也就是不需要做任何處理。

手動解決依賴沖突?

先說兩個方法,然后在說下怎么做

  • 排除依賴:用于排除某項依賴的依賴jar包

  • 版本鎖定

排除依賴就是在依賴庫中排除對應版本的jar包,斷開依賴,在程序運行的時候會尋找其他的對應的版本API

?版本鎖定就是在pom中直接聲明對應的jar包版本,maven就不會依賴其他的版本了,這個需要原理是基于groupId 和 artifactId 做定位。

maven插件

因為我使用的是idea,所以直接在插件庫中搜索maven helper就可以了

file ->settings->plugins 打開插件的安裝界面

安裝完成之后就可以在pom 文件中看到

?

點擊之后就可以看到沖突的jar包

實例解決?

由上面的圖可以看到

easyexcel 依賴的asm 是7.1

spring-cloud-starter-netflix-hystrix 依賴的asm 是5.0.4

在依賴的樹上可以看到優先聲明的是spring-cloud-starter-netflix-hystrix ,所以當前系統使用的版本是5.0.4,導致在調用easyexcel的時候報錯

解決方案:
將easyExcel 聲明在最前面

<dependency><groupId>com.alibaba</groupId><artifactId>easyexcel</artifactId><version>3.0.5</version></dependency><dependency><groupId>org.springframework.cloud</groupId><artifactId>spring-cloud-starter-netflix-hystrix</artifactId> </dependency>

排除5.0.4 版本,注意 exclusions 的使用

手動寫pom

<dependency><groupId>org.springframework.cloud</groupId><artifactId>spring-cloud-starter-netflix-hystrix</artifactId><exclusions><exclusion><artifactId>asm</artifactId><groupId>org.ow2.asm</groupId></exclusion></exclusions> </dependency>

使用maven helper,在需要排除的版本右鍵,選擇exclude,最終產生的代碼就像上面

鎖定版本

<dependency><artifactId>asm</artifactId><groupId>org.ow2.asm</groupId><version>7.1</version> </dependency>

解決辦法總結

內置:

  • 原則一:最短路徑優先

  • 原則二:第一聲明者優先

  • 原則三:覆蓋優先

手動:

  • 排除依賴:用于排除某項依賴的依賴jar包

  • 版本鎖定

希望能對大家有所幫助,歡迎一鍵三連,謝謝。

總結

以上是生活随笔為你收集整理的Maven解决jar包版本冲突的全部內容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網站內容還不錯,歡迎將生活随笔推薦給好友。