新聞中心
這篇文章主要講解了如何解決Maven jar包沖突,內(nèi)容清晰明了,對(duì)此有興趣的小伙伴可以學(xué)習(xí)一下,相信大家閱讀完之后會(huì)有幫助。
成都創(chuàng)新互聯(lián)是一家集網(wǎng)站建設(shè),西夏企業(yè)網(wǎng)站建設(shè),西夏品牌網(wǎng)站建設(shè),網(wǎng)站定制,西夏網(wǎng)站建設(shè)報(bào)價(jià),網(wǎng)絡(luò)營(yíng)銷,網(wǎng)絡(luò)優(yōu)化,西夏網(wǎng)站推廣為一體的創(chuàng)新建站企業(yè),幫助傳統(tǒng)企業(yè)提升企業(yè)形象加強(qiáng)企業(yè)競(jìng)爭(zhēng)力。可充分滿足這一群體相比中小企業(yè)更為豐富、高端、多元的互聯(lián)網(wǎng)需求。同時(shí)我們時(shí)刻保持專業(yè)、時(shí)尚、前沿,時(shí)刻以成就客戶成長(zhǎng)自我,堅(jiān)持不斷學(xué)習(xí)、思考、沉淀、凈化自己,讓我們?yōu)楦嗟钠髽I(yè)打造出實(shí)用型網(wǎng)站。
現(xiàn)象
創(chuàng)建一個(gè)maven工程,引入spring-context包。
org.springframework spring-context 5.0.8.RELEASE
此時(shí)看左側(cè)的lib,我們發(fā)現(xiàn)引入了一個(gè)坐標(biāo),多出了很多的jar包,這個(gè)現(xiàn)象叫做依賴傳遞,就是說,當(dāng)前坐標(biāo)所依賴的jar包也會(huì)一同引入進(jìn)來,這里的版本都是5.0.8的。
接下來,我們?cè)僖胍粋€(gè)springmvc。我們換一個(gè)版本,我們引入4.2.4版本
org.springframework spring-webmvc 4.2.4.RELEASE
我們通過idea給的maven分析圖可以看出,mvc和context都依賴與sprng-core一個(gè),依賴的是5.0.8版本,一個(gè)依賴的是4.2.4版本。
那么真正加載的是哪個(gè)版本呢。是5.0.8版本。
此時(shí)就是存在了jar包的沖突問題,那么我們解決這個(gè)問題,有三種方式。
聲明優(yōu)先原則
此時(shí)我們的pom文件中是先聲明的5.0.8版本,后聲明的4.2.4版本,我們將其調(diào)換順序。
此時(shí)我們發(fā)現(xiàn)他們共同依賴的jar包,都變成了4.2.4版本,這就是聲明優(yōu)先原則。
就近優(yōu)先原則
比如,我們不想調(diào)換順序,我們就是想使用4.2.4版本的spring-core。我們可以單獨(dú)引入進(jìn)來
此時(shí)再看,我們發(fā)現(xiàn)依賴的spring-core已經(jīng)變成了4.2.4版本了。
這個(gè)就是就近優(yōu)先原則,就近優(yōu)先是直接依賴,直接依賴的優(yōu)先級(jí)大于傳遞依賴的優(yōu)先級(jí)。
排除依賴
這種方式我們可以直接排除spring-context中的spring-core的傳遞依賴。
再看依賴,此時(shí)已經(jīng)改為4.2.4.
使用exclusions標(biāo)簽的時(shí)候,其內(nèi)部不用寫版本號(hào),這是唯一不用寫版本號(hào)的一種情況。因?yàn)樗J(rèn)就去找當(dāng)前依賴的版本了。
看完上述內(nèi)容,是不是對(duì)如何解決Maven jar包沖突有進(jìn)一步的了解,如果還想學(xué)習(xí)更多內(nèi)容,歡迎關(guān)注創(chuàng)新互聯(lián)行業(yè)資訊頻道。
網(wǎng)頁名稱:如何解決Mavenjar包沖突
分享路徑:http://www.ef60e0e.cn/article/goccge.html