maven的依賴特性以及沖突解決是什么,針對這個(gè)問題,這篇文章詳細(xì)介紹了相對應(yīng)的分析和解答,希望可以幫助更多想解決這個(gè)問題的小伙伴找到更簡單易行的方法。
創(chuàng)新互聯(lián)公司專注于銅山網(wǎng)站建設(shè)服務(wù)及定制,我們擁有豐富的企業(yè)做網(wǎng)站經(jīng)驗(yàn)。 熱誠為您提供銅山營銷型網(wǎng)站建設(shè),銅山網(wǎng)站制作、銅山網(wǎng)頁設(shè)計(jì)、銅山網(wǎng)站官網(wǎng)定制、小程序制作服務(wù),打造銅山網(wǎng)絡(luò)公司原創(chuàng)品牌,更為您提供銅山網(wǎng)站排名全網(wǎng)營銷落地服務(wù)。
1.1 依賴范圍 -scope標(biāo)簽
maven在構(gòu)建過程有3套classpath,我們會根據(jù)配置依賴的范圍 依賴不同的classpath,如下圖:

compile:默認(rèn)是compile,對 編譯 測試 運(yùn)行 都有效
provided:對編譯和測試classpath有效,運(yùn)行的時(shí)候不需要加入,例如 jsp 依賴 searvlet api ,比如我們在編譯和測試的時(shí)候有效但是在運(yùn)行的時(shí)候 容器已經(jīng)提供servletapi,如果加入會造成沖突
runtime:只在測試和運(yùn)行時(shí) 有效,比較典型的例子 jdbc api,只有在啟動代碼測試或者運(yùn)行的時(shí)候才會啟用
test:只會在測試時(shí)有效,比較典型例子 就是junit ,只有再測試的時(shí)候 才會啟用
1.2 依賴傳遞
比如我們引入某一個(gè)依賴spring-test,依賴傳遞特性會很方便幫助我們下來它相關(guān)的依賴,而不必有時(shí)會因?yàn)橐雑ar有問題而煩惱,但是也有弊端,存在一些不必要的依賴,可能會造成沖突。

1.3 依賴排除 -exclusion標(biāo)簽
依賴排除的特性 也是為了解決依賴沖突的一個(gè)方法,很方便去除依賴傳遞過程中不必要的依賴。在下面依賴沖沖突會用到 該標(biāo)簽。

1.4 依賴沖突產(chǎn)生原因
使用maven久了會發(fā)現(xiàn)存在依賴沖突的問題,由于依賴的傳遞特性會引入很多隱式的依賴和現(xiàn)有顯示jar版本 所沖突,從而造成版本沖突的問題。要解決這個(gè)問題,首先就是要查看pom.xml顯式和隱式的依賴類包, 然后通過這個(gè)類包樹找出我們不想要的依賴類包,手工將其排除在外就可以了。
2.1兩個(gè)基本原則:
1).短路優(yōu)先原則
A->B->logback-1.0.jar
A->logback-1.1.jar
2).先聲明先優(yōu)先原則(先解析先引用)
與項(xiàng)目A pom中配置 引用坐標(biāo)的順序有關(guān),如果依賴B在C前的話 就優(yōu)先B,反之...
A->B->logback-1.0.jar
A->C->logback-1.1.jar
2.2 演示兩個(gè)原則
1).創(chuàng)建三個(gè)maven工程
maven-01,maven-02,maven-03
2).三個(gè)工程依賴結(jié)構(gòu):
maven-01依賴 spring-test,maven-02,maven-03 (maven-02/03需要首先提交本地倉庫,maven-01才能找到 ,可以參考尋找構(gòu)件過程:1.3 倉庫尋找構(gòu)件過程) ;
maven-02依賴commons-logging-1.1.1;
maven-03工程依賴 commons-logging-1.1.3
3).看下myEclipse或者執(zhí)行mvn dependency:tree 查看依賴樹:
myeclispe:依賴樹

4).沖突解決辦法:
4.1 pom配置1:
Xml代碼
1. <dependency> 2. <groupid>org.springframework</groupid> 3. <artifactid>spring-test</artifactid> 4. <version>4.2.2.RELEASE</version> 5. <!-- 依賴排除 可以排除對commons-logging 的依賴 6. <exclusions> 7. <exclusion> 8. <groupId>commons-logging</groupId> 9. <artifactId>commons-logging</artifactId> 10. </exclusion> 11. </exclusions> 12. --> 13. </dependency> 15. <!-- 添加對maven-02依賴 --> 16. <dependency> 17. <groupid>com.sohu.train</groupid> 18. <artifactid>maven-02</artifactid> 19. <version>1.0-SNAPSHORT</version> 20. </dependency>
短路優(yōu)先原則:
maven-01->spring-test->spring-core->commons-loggings-1.2(依賴深度3)
maven-01->maven-02->commons-loggings-1.1.1(依賴深度2)
所以maven01工程依賴的commons-loggings-1.1.1

4.2 pom配置2:
Xml代碼
1. <dependency> 2. <groupid>org.springframework</groupid> 3. <artifactid>spring-test</artifactid> 4. <version>4.2.2.RELEASE</version> 5. <!-- 依賴排除 --> 6. <exclusions> 7. <exclusion> 8. <groupid>commons-logging</groupid> 9. <artifactid>commons-logging</artifactid> 10. </exclusion> 11. </exclusions> 12. </dependency> 14. <!-- 添加對maven-03依賴 --> 15. <dependency> 16. <groupid>com.sohu.train</groupid> 17. <artifactid>maven-03</artifactid> 18. <version>0.0.1-SNAPSHOT</version> 19. </dependency> 21. <!-- 添加對maven-02依賴 --> 22. <dependency> 23. <groupid>com.sohu.train</groupid> 24. <artifactid>maven-02</artifactid> 25. <version>1.0-SNAPSHORT</version> 26. </dependency>
先引用先優(yōu)先的原則:
maven-01->spring-test->spring-core
maven-01->maven-02->commons-logging-1.1.1
maven-01->maven-03->commons-logging-1.1.3
如果pom先依賴maven-02則 依賴commons-logging-1.1.1 依賴;反之,如果pom先依賴maven-03則 依賴commons-loen
關(guān)于maven的依賴特性以及沖突解決是什么問題的解答就分享到這里了,希望以上內(nèi)容可以對大家有一定的幫助,如果你還有很多疑惑沒有解開,可以關(guān)注創(chuàng)新互聯(lián)行業(yè)資訊頻道了解更多相關(guān)知識。
本文題目:maven的依賴特性以及沖突解決是什么
當(dāng)前地址:http://www.chinadenli.net/article34/jdhepe.html
成都網(wǎng)站建設(shè)公司_創(chuàng)新互聯(lián),為您提供網(wǎng)站維護(hù)、定制開發(fā)、網(wǎng)站建設(shè)、營銷型網(wǎng)站建設(shè)、品牌網(wǎng)站制作、移動網(wǎng)站建設(shè)
聲明:本網(wǎng)站發(fā)布的內(nèi)容(圖片、視頻和文字)以用戶投稿、用戶轉(zhuǎn)載內(nèi)容為主,如果涉及侵權(quán)請盡快告知,我們將會在第一時(shí)間刪除。文章觀點(diǎn)不代表本網(wǎng)站立場,如需處理請聯(lián)系客服。電話:028-86922220;郵箱:631063699@qq.com。內(nèi)容未經(jīng)允許不得轉(zhuǎn)載,或轉(zhuǎn)載時(shí)需注明來源: 創(chuàng)新互聯(lián)