如何使用maven-helper插件解決jar包沖突問題
一 mavenHelper插件的介紹安裝
1.1 介紹
安裝了Maven Helper插件,只要打開pom文件,就可以打開該pom文件的Dependency Analyzer視圖(在文件打開之后,文件下面會多出這樣一個tab),進入Dependency Analyzer視圖之后有三個查看選項,分別是Conflicts(沖突)、All Dependencies as List(列表形式查看所有依賴)、All Dependencies as Tree(樹結(jié)構(gòu)查看所有依賴)。并且這個頁面還支持搜索。很方便!
1.2 安裝
1.在線安裝:File-->setting--->Plugins--->在搜索框中填寫Maven Helper然后搜索,單擊Install按鈕進行安裝,裝完重啟IDE。
2.離線安裝:點擊“Plugins”->“Marketplace”->輸入"mavn helper"->點擊“install”->點擊“OK”完成安裝
1.3 helper的使用
1.當Maven Helper 插件安裝成功后,打開項目中的pom文件,下面就會多出一個試圖
2.helper的界面
打開pom文件,并可以切換tab,簡單使用,如下圖:
Conflicts(查看沖突)
All Dependencies as List(列表形式查看所有依賴)
All Dependencies as Tree(樹形式查看所有依賴)
當前界面上還提供搜索功能 方便使用
二 jar包沖突說明
2.1 說明
首先,解決idea中jar包沖突,使用maven的插件:maven helper插件,它能夠給我們羅列出來同一個jar包的不同版本,以及他們的來源,但是對不同jar包中同名的類沒有辦法。
2.2 依賴順序
1.點擊【All Dependencies as Tree】,查看:從上向下,A依賴于B,B依賴于C;starter依賴core,core依賴api
2.點擊【Conflicts】,從圖中可以看出有哪些jar存在沖突,存在沖突的情況下最終采用了哪個依賴的版本。標紅的就是沖突版本,白色的是當前的解析版本。這個選項,需要從下向上看;
A依賴于B,B依賴于C,如下圖:沖突的jar包就是dpscn-apass-oltp-plugin-api
2.3 解決思路
2.3.1 *排除指定的版本*
思想:如果有兩個依賴的版本發(fā)生了沖突,那么只要把其中一個依賴給排除掉,只剩下一個依賴,那么自然就可以解決沖突的問題。我們只需要使用exclusion關(guān)鍵字對相關(guān)依賴進行排除就行
1.這里可以看到 spirng-beans-4.2.4.release和spring-beans-5.0.12沖突,這里舍棄spirng-beans-4.2.4.release這個版本,保留spring-beans-5.0.12 這個版本。使用 exclusion 排除定位到的沖突包。
2.在4.2.4版本側(cè)選中【exclude】
3.查看pom依賴,刷新pom后
4.再次點擊【conflicts】,可以看到關(guān)于spring-beans的沖突已經(jīng)沒有,現(xiàn)在使用的是spring-beans-5.0.12這個版本
2.3.2 子工程顯示指定版本
顯示單獨聲明使用依賴的版本
2.3.3 子工程中先排除,后指定版本
如下圖,在starter-web中排除spring-webmvc,然后指定spring-webmvc的版本為6.0.9。
2.3.4 鎖定版本
方案4:鎖定版本,我們最常使用的解決方式,是使用dependencyManagement統(tǒng)一對依賴的版本進行定義。這樣的話,導入依賴的時候就會直接使用我們鎖定的依賴版本。
這里要注意兩點,版本鎖定和【使用路徑優(yōu)先原則不同,使用路徑優(yōu)先原則,是實實在在地將jar包給引入到pom文件中】,而版本鎖定只是規(guī)定了要使用的版本號,只有真實用到了相關(guān)的依賴,才生效。同時,版本鎖定可以更集中地約束和規(guī)定依賴版本,這種優(yōu)勢是其他方法所不能達到的。
當然了,如果只是簡單的小型項目,使用其他方式可能是更好的解決方法。
http://chabaoo.cn/program/318190efu.htm
三 案例
排除指定版本
3.1 沖突說明
1.沖突依賴描述
<dependency> <groupId>org.springframework</groupId> <artifactId>spring-webmvc</artifactId> <version>4.2.4.RELEASE</version> <exclusions> <exclusion> <artifactId>spring-beans</artifactId> <groupId>org.springframework</groupId> </exclusion> </exclusions> </dependency> <dependency> <groupId>org.springframework</groupId> <artifactId>spring-aop</artifactId> <version>5.0.12.RELEASE</version> </dependency>
2.說明:從下向上看
spring-aop 版本5.0.12版本
spring-webmvc4.2.4 依賴于spring-web 4.2.4 ,spring-web-4.2.4依賴于spring-aop4.2.4 版本
沖突版本:spring-aop:5.0.12 和spring-aop4.2.4 沖突
3.2 解決方法
排除掉spring-aop4.2.4這個版本,保留spring-aop:5.0.12 這個版本
查看maven坐標:在4.2.4-spirng-webmvc排除掉spring-aop4.2.4版本,刷新pom,重新拉包,如圖
4.查看沖突已解決:再次點擊【conflicts】查看aop的沖突已經(jīng)沒有了
四 案例:子工程指定具體版本
4.1 沖突說明
4.2 排除方法
在父工程中的pom文件中聲明沖突依賴的具體版本。如圖,這里指定:dpsn-appas-oltp-plugin-api的版本為1.0.0
五 案例 鎖定版本*
5.1 沖突說明
鎖定版本,我們最常使用的解決方式,是使用dependencyManagement統(tǒng)一對依賴的版本進行定義。這樣的話,導入依賴的時候就會直接使用我們鎖定的依賴版本。
這里在父工程的pom里面<dependecyManagement>中的<dependencies>標簽中,指定使用版本
<dependency> <groupId>com.pab.dpscn</groupId> <artifactId>corebankpulltest-message</artifactId> <version>1.0.0-dev-test-SNAPSHOT</version> </dependency>
詳情見下圖
5.2 解決方法
1.這里查看依賴要從上向下看:可以看到:
Clearingledger-ledger-1.0.0-snapshot依賴于Clearingledger-ledger-facade-1.0.0-snapshot
Clearingledger-ledger-facade-1.0.0-snapshot依賴于corebankpulltest-message-1.0.0-dev-snapshot
沖突版本為:corebankpulltest-message-1.0.0-dev-snapshot和corebankpulltest-message-1.0.0-dev-test-snapshot版本
2.解決辦法:在父工程的dependencyManagement標簽中鎖定版本使用corebankpulltest-message:1.0.0-dev-test-snapshot版本
到此這篇關(guān)于使用maven-helper插件解決jar包沖突的文章就介紹到這了,更多相關(guān)maven-helper插件解決jar包沖突內(nèi)容請搜索腳本之家以前的文章或繼續(xù)瀏覽下面的相關(guān)文章希望大家以后多多支持腳本之家!
相關(guān)文章
springboot整合logback實現(xiàn)日志管理操作
本章節(jié)是記錄logback在springboot項目中的簡單使用,本文將會演示如何通過logback將日志記錄到日志文件或輸出到控制臺等管理操作,感興趣的朋友跟隨小編一起看看吧2024-02-02Netty搭建WebSocket服務(wù)器實戰(zhàn)教程
這篇文章主要介紹了Netty搭建WebSocket服務(wù)器實戰(zhàn),本文給大家介紹的非常詳細,對大家的學習或工作具有一定的參考借鑒價值,需要的朋友參考下吧2024-03-03Java中的List接口實現(xiàn)類LinkList和ArrayList詳解
這篇文章主要介紹了Java中的List接口實現(xiàn)類LinkList和ArrayList詳解,List接口繼承自Collection接口,是單列集合的一個重要分支,實現(xiàn)了List接口的對象稱為List集合,在List集合中允許出現(xiàn)重復的元素,所有的元素是以一種線性方式進行存儲的,需要的朋友可以參考下2024-01-01關(guān)于Long和Integer相互轉(zhuǎn)換方式
這篇文章主要介紹了關(guān)于Long和Integer相互轉(zhuǎn)換方式,具有很好的參考價值,希望對大家有所幫助,如有錯誤或未考慮完全的地方,望不吝賜教2023-08-08詳解Spring框架下向異步線程傳遞HttpServletRequest參數(shù)的坑
這篇文章主要介紹了詳解Spring框架下向異步線程傳遞HttpServletRequest參數(shù)的坑,小編覺得挺不錯的,現(xiàn)在分享給大家,也給大家做個參考。一起跟隨小編過來看看吧2019-03-03