javascript
依赖项出现感叹号怎么办_SpringBoot中如何对依赖进行管理?
SpringBoot中的起步依賴(starter)是一組特定功能的依賴項集合,SpringBoot通過starter來進行項目的依賴管理,而不是直接基于單獨的依賴項來進行依賴管理。
starter其實就是特殊的Maven依賴項或者Gradle依賴項,它把常用的庫組合到一起構成了一個特定的功能。
舉幾個例子:spring-boot-starter-test是集成了測試功能的starter,spring-boot-starter-web是集成了web功能的starter,spring-boot-starter-data-mongodb是集成了MongoDB功能的starter。
starter中的依賴項都是經過官方精心測試的,能夠保證相互之間的兼容性,最好不要進行更改。但是對于一些特定的場景、特定的需求來說也會遇到修改依賴項的時候,今天我們簡單說一下如何進行修改。
測試目標:spring-boot-starter-web
我們項目里有2個starter,其中一個就是spring-boot-starter-web,我們就以它為目標進行依賴管理的測試。如圖:
spring-boot-starter-web
首先我們先通過以下maven命令查看一下spring-boot-starter-web有哪些依賴項。
mvn dependency:treespring-boot-starter-web的依賴
從上圖中我們可以看出我們項目依賴了spring-boot-starter-web,而spring-boot-starter-web又通過依賴傳遞依賴了jackson相關的jar包。我們接下來對jackson相關的包進行排除和替換,一起來看下需要什么操作。
排除依賴
如果我們需要把jackson相關的包移除掉該怎么辦呢?很簡單,直接在maven中通過標簽就可以了,如圖:
exclusions
然后再查看一下依賴,就發(fā)現(xiàn)spring-boot-starter-json下已經沒有jackson相關的包了:
排除jackson相關的包
maven的依賴管理原則
在對jackson相關的包進行替換之前,我們先看一下maven在處理依賴時的2個原則。
第一原則:路徑最短者優(yōu)先
比如說A對于C的依賴有2條路徑,第一條路徑為A->B->C(1.0),第二條路徑為A->H->I->C(2.0),因為第一條路徑的長度為2,第二條路徑的長度為3,所以A采用路徑最短的第一條路徑下的C(1.0)。
第二原則:第一聲明者優(yōu)先
如果2條路徑的長度都一樣的話,那么此時第一聲明者會被采用。
比如說A對于C的依賴有2條路徑,第一條路徑為A->B->C(1.0),第二條路徑為A->H->C(2.0),此時第一條路徑的長度和第二條路徑的長度都是2,這個時候如果第一條路徑先聲明那么對于C的依賴就是1.0,如果是第二條路徑先聲明那么對于C的依賴就是2.0。
綜上所述,大家應該能夠發(fā)現(xiàn),maven對于依賴項的管理和依賴項的版本沒有關系。
替換依賴
替換依賴從字面上理解很簡單,就是取代的意思,但是這里要講清楚,替換包括高版本替換低版本和低版本替換高版本這兩種。
根據(jù)maven的路徑最短者優(yōu)先的原則,如果我們想對jackson相關的包進行替換的話,我們直接在maven的pom文件中添加我們需要的特定版本的依賴項就可以了,而不用在意這個版本是更高的版本還是更低的版本,也不用再通過標簽排除掉現(xiàn)有的版本,因為我們直接添加的依賴項路徑更短。
下圖是新添加的jackson相關的依賴,我們把改為更低的版本2.8.11:
2.8.11版本的jackson
新增的jackson相關的依賴
我們再來查看一下依賴發(fā)現(xiàn)spring-boot-starter-json下已經沒有的jackson相關的依賴,底部則直接添加了我們新配置的2.8.11版本的jackson相關的包。
新增的jackson依賴
需要注意的是這是maven的配置,我們只需添加我們需要的特定版本的依賴項就可以了,而不用擔心是更高版本的依賴還是更低版本的依賴,因為我們直接添加的依賴項相對于starter中的依賴項來說路徑更短。
但是對于Gradle管理的項目來說并不是這么直接簡單,Gradle對于依賴項會優(yōu)先使用最新的版本。
如果你想用低版本的依賴項,除了需要添加這個低版本的依賴項之外還需要排除掉高版本的依賴項才可以。
結束
今天的內容到此就講完了,我們講述了springboot中如何排除特定的依賴,如何替換特性的依賴。另外還講了maven對于依賴管理的2條原則。
希望這些能夠幫助到大家,如果大家有什么疑問歡飲留言哦。
總結
以上是生活随笔為你收集整理的依赖项出现感叹号怎么办_SpringBoot中如何对依赖进行管理?的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: NFS精简版配置方法
- 下一篇: keil软件安装与破解