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

歡迎訪問 生活随笔!

生活随笔

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

编程问答

maven排除依赖冲突问题

發布時間:2023/12/4 编程问答 31 豆豆
生活随笔 收集整理的這篇文章主要介紹了 maven排除依赖冲突问题 小編覺得挺不錯的,現在分享給大家,幫大家做個參考.

今天碰到了一個詭異的問題。
jedis版本原來用的是2.9.0,想要替換成3.0.1,涉及到父pom,搞了半天,試了各種辦法,版本都改不過來。
項目依賴的始終是2.9.0,并且從當前pom到父pom,都找不到在哪里指定了2.9.0。

最終,采取下述方法1,問題解決。

maven依賴沖突一般有四種解決方式,按照優先級(從高到低)介紹:

1. 依賴管理(所有版本鎖定)

在配置文件pom.xml中先聲明要使用哪個版本的相應jar包,聲明后其他版本的jar包一律不依賴

<properties> <spring.version>4.2.4.RELEASE</spring.version> <hibernate.version>5.0.7.Final</hibernate.version> <struts.version>2.3.24</struts.version> </properties> </properties> <!-- 鎖定版本,struts2-2.3.24、spring4.2.4、hibernate5.0.7 --> <dependencyManagement> <dependencies> <dependency> <groupId>org.springframework</groupId> <artifactId>spring-context</artifactId><version>${spring.version}</version> </dependency> </dependencies></dependencyManagement>

如果是應用在同一個工程內有多個模塊時,提取出一個父親模塊來管理子模塊共同依賴的 jar 包版本,則子模塊相同jar包不需要指定version信息

2. 移除依賴

如果我們不想通過 A->B->C>D1 引入 D1 的話,那么我們在聲明引入 A 的時候將 D1 排除掉
舉個例子:將 zookeeper 的 jline 依賴排除

<dependency><groupId>org.apache.hadoop</groupId><artifactId>zookeeper</artifactId><version>3.3.1</version><exclusions><exclusion><groupId>jline</groupId><artifactId>jline</artifactId></exclusion></exclusions></dependency>

3. 第一聲明優先原則

在pom.xml配置文件中,如果有兩個名稱相同版本不同的依賴聲明,那么先寫的會生效。
所以,先聲明自己要用的版本的jar包即可。

4. 最短路徑優先

直接依賴優先于傳遞依賴,如果傳遞依賴的jar包版本沖突了,那么可以自己聲明一個指定版本的依賴jar,即可解決沖突。

總結

以上是生活随笔為你收集整理的maven排除依赖冲突问题的全部內容,希望文章能夠幫你解決所遇到的問題。

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