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

歡迎訪問(wèn) 生活随笔!

生活随笔

當(dāng)前位置: 首頁(yè) > 前端技术 > javascript >内容正文

javascript

依赖项出现感叹号怎么办_SpringBoot中如何对依赖进行管理?

發(fā)布時(shí)間:2023/12/10 javascript 39 豆豆
生活随笔 收集整理的這篇文章主要介紹了 依赖项出现感叹号怎么办_SpringBoot中如何对依赖进行管理? 小編覺(jué)得挺不錯(cuò)的,現(xiàn)在分享給大家,幫大家做個(gè)參考.

SpringBoot中的起步依賴(starter)是一組特定功能的依賴項(xiàng)集合,SpringBoot通過(guò)starter來(lái)進(jìn)行項(xiàng)目的依賴管理,而不是直接基于單獨(dú)的依賴項(xiàng)來(lái)進(jìn)行依賴管理。

starter其實(shí)就是特殊的Maven依賴項(xiàng)或者Gradle依賴項(xiàng),它把常用的庫(kù)組合到一起構(gòu)成了一個(gè)特定的功能。

舉幾個(gè)例子:spring-boot-starter-test是集成了測(cè)試功能的starter,spring-boot-starter-web是集成了web功能的starter,spring-boot-starter-data-mongodb是集成了MongoDB功能的starter。

starter中的依賴項(xiàng)都是經(jīng)過(guò)官方精心測(cè)試的,能夠保證相互之間的兼容性,最好不要進(jìn)行更改。但是對(duì)于一些特定的場(chǎng)景、特定的需求來(lái)說(shuō)也會(huì)遇到修改依賴項(xiàng)的時(shí)候,今天我們簡(jiǎn)單說(shuō)一下如何進(jìn)行修改。

測(cè)試目標(biāo):spring-boot-starter-web

我們項(xiàng)目里有2個(gè)starter,其中一個(gè)就是spring-boot-starter-web,我們就以它為目標(biāo)進(jìn)行依賴管理的測(cè)試。如圖:

spring-boot-starter-web

首先我們先通過(guò)以下maven命令查看一下spring-boot-starter-web有哪些依賴項(xiàng)。

mvn dependency:tree

spring-boot-starter-web的依賴

從上圖中我們可以看出我們項(xiàng)目依賴了spring-boot-starter-web,而spring-boot-starter-web又通過(guò)依賴傳遞依賴了jackson相關(guān)的jar包。我們接下來(lái)對(duì)jackson相關(guān)的包進(jìn)行排除和替換,一起來(lái)看下需要什么操作。

排除依賴

如果我們需要把jackson相關(guān)的包移除掉該怎么辦呢?很簡(jiǎn)單,直接在maven中通過(guò)標(biāo)簽就可以了,如圖:

exclusions

然后再查看一下依賴,就發(fā)現(xiàn)spring-boot-starter-json下已經(jīng)沒(méi)有jackson相關(guān)的包了:

排除jackson相關(guān)的包

maven的依賴管理原則

在對(duì)jackson相關(guān)的包進(jìn)行替換之前,我們先看一下maven在處理依賴時(shí)的2個(gè)原則。

第一原則:路徑最短者優(yōu)先

比如說(shuō)A對(duì)于C的依賴有2條路徑,第一條路徑為A->B->C(1.0),第二條路徑為A->H->I->C(2.0),因?yàn)榈谝粭l路徑的長(zhǎng)度為2,第二條路徑的長(zhǎng)度為3,所以A采用路徑最短的第一條路徑下的C(1.0)。

第二原則:第一聲明者優(yōu)先

如果2條路徑的長(zhǎng)度都一樣的話,那么此時(shí)第一聲明者會(huì)被采用。

比如說(shuō)A對(duì)于C的依賴有2條路徑,第一條路徑為A->B->C(1.0),第二條路徑為A->H->C(2.0),此時(shí)第一條路徑的長(zhǎng)度和第二條路徑的長(zhǎng)度都是2,這個(gè)時(shí)候如果第一條路徑先聲明那么對(duì)于C的依賴就是1.0,如果是第二條路徑先聲明那么對(duì)于C的依賴就是2.0。

綜上所述,大家應(yīng)該能夠發(fā)現(xiàn),maven對(duì)于依賴項(xiàng)的管理和依賴項(xiàng)的版本沒(méi)有關(guān)系。

替換依賴

替換依賴從字面上理解很簡(jiǎn)單,就是取代的意思,但是這里要講清楚,替換包括高版本替換低版本和低版本替換高版本這兩種。

根據(jù)maven的路徑最短者優(yōu)先的原則,如果我們想對(duì)jackson相關(guān)的包進(jìn)行替換的話,我們直接在maven的pom文件中添加我們需要的特定版本的依賴項(xiàng)就可以了,而不用在意這個(gè)版本是更高的版本還是更低的版本,也不用再通過(guò)標(biāo)簽排除掉現(xiàn)有的版本,因?yàn)槲覀冎苯犹砑拥囊蕾図?xiàng)路徑更短。

下圖是新添加的jackson相關(guān)的依賴,我們把改為更低的版本2.8.11:

2.8.11版本的jackson

新增的jackson相關(guān)的依賴

我們?cè)賮?lái)查看一下依賴發(fā)現(xiàn)spring-boot-starter-json下已經(jīng)沒(méi)有的jackson相關(guān)的依賴,底部則直接添加了我們新配置的2.8.11版本的jackson相關(guān)的包。

新增的jackson依賴

需要注意的是這是maven的配置,我們只需添加我們需要的特定版本的依賴項(xiàng)就可以了,而不用擔(dān)心是更高版本的依賴還是更低版本的依賴,因?yàn)槲覀冎苯犹砑拥囊蕾図?xiàng)相對(duì)于starter中的依賴項(xiàng)來(lái)說(shuō)路徑更短。

但是對(duì)于Gradle管理的項(xiàng)目來(lái)說(shuō)并不是這么直接簡(jiǎn)單,Gradle對(duì)于依賴項(xiàng)會(huì)優(yōu)先使用最新的版本。

如果你想用低版本的依賴項(xiàng),除了需要添加這個(gè)低版本的依賴項(xiàng)之外還需要排除掉高版本的依賴項(xiàng)才可以。

結(jié)束

今天的內(nèi)容到此就講完了,我們講述了springboot中如何排除特定的依賴,如何替換特性的依賴。另外還講了maven對(duì)于依賴管理的2條原則。

希望這些能夠幫助到大家,如果大家有什么疑問(wèn)歡飲留言哦。

總結(jié)

以上是生活随笔為你收集整理的依赖项出现感叹号怎么办_SpringBoot中如何对依赖进行管理?的全部?jī)?nèi)容,希望文章能夠幫你解決所遇到的問(wèn)題。

如果覺(jué)得生活随笔網(wǎng)站內(nèi)容還不錯(cuò),歡迎將生活随笔推薦給好友。