maven依賴(lài)調(diào)解

項(xiàng)目有以下依賴(lài):

<dependency>
    <groupId>com.vips.components</groupId>
    <artifactId>vips-common-cache</artifactId>
    <version>2.0</version>
</dependency>
<dependency>
    <groupId>org.apache.poi</groupId>
    <artifactId>poi</artifactId>
    <version>3.9</version>
</dependency>

其中

vips-common-cache ---> vip-common-util ---> commons-codec(1.6)

poi ---> commons-codec(1.5)

使用 mvn dependency:tree 分析依賴(lài)后,發(fā)現(xiàn)maven實(shí)際使用的是 poi下的commons-codec(1.5)

image

再來(lái)看以下情形:

<dependency>
    <groupId>org.apache.httpcomponents</groupId>
    <artifactId>httpclient</artifactId>
    <version>4.4.1</version>
</dependency>
<dependency>
    <groupId>org.apache.poi</groupId>
    <artifactId>poi</artifactId>
    <version>3.9</version>
</dependency>

httpclient ---> commons-codec(1.9)

poi ---> commons-codec(1.5)

分析依賴(lài)后發(fā)現(xiàn),maven選擇了commons-codec(1.9)

image

結(jié)論:

maven遇到依賴(lài)沖突后,主要兩種原則解決:

1.路徑優(yōu)先原則:如第一個(gè)例子,

vips-common-cache ---> vip-common-util ---> commons-codec(1.6)

poi ---> commons-codec(1.5)

commons-codec(1.6)路徑深度是3, commons-codec(1.5)是2,所以maven選擇較短路徑的那個(gè)

2.聲明優(yōu)先原則:如第二個(gè)例子,當(dāng)沖突依賴(lài)所處的路徑相同,聲明在前的會(huì)被引用

最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請(qǐng)聯(lián)系作者
平臺(tái)聲明:文章內(nèi)容(如有圖片或視頻亦包括在內(nèi))由作者上傳并發(fā)布,文章內(nèi)容僅代表作者本人觀點(diǎn),簡(jiǎn)書(shū)系信息發(fā)布平臺(tái),僅提供信息存儲(chǔ)服務(wù)。

推薦閱讀更多精彩內(nèi)容