本篇文章給大家分享的是有關(guān)Java項(xiàng)目中怎么避免循環(huán)依賴,小編覺得挺實(shí)用的,因此分享給大家學(xué)習(xí),希望大家閱讀完這篇文章后可以有所收獲,話不多說(shuō),跟著小編一起來(lái)看看吧。
在蘭考等地區(qū),都構(gòu)建了全面的區(qū)域性戰(zhàn)略布局,加強(qiáng)發(fā)展的系統(tǒng)性、市場(chǎng)前瞻性、產(chǎn)品創(chuàng)新能力,以專注、極致的服務(wù)理念,為客戶提供成都網(wǎng)站設(shè)計(jì)、網(wǎng)站建設(shè) 網(wǎng)站設(shè)計(jì)制作定制制作,公司網(wǎng)站建設(shè),企業(yè)網(wǎng)站建設(shè),高端網(wǎng)站設(shè)計(jì),全網(wǎng)營(yíng)銷推廣,外貿(mào)營(yíng)銷網(wǎng)站建設(shè),蘭考網(wǎng)站建設(shè)費(fèi)用合理。
舉個(gè)例子:
圖中我們的API 庫(kù)導(dǎo)入了一些庫(kù),但這些庫(kù)同時(shí)依賴了庫(kù)X的不同版本,這樣就好出現(xiàn)依賴沖突。
如何解決這個(gè)問(wèn)題
在沒(méi)有Maven & Gradle 庫(kù)管理工具之前,我們開發(fā)一個(gè)Java項(xiàng)目需要耗費(fèi)大量的時(shí)間去解決我們項(xiàng)目的依賴沖突,Maven & Gradle工具的引入極大的解決了我們依賴的問(wèn)題,但很多時(shí)候我們還是會(huì)看到諸如:ClassNotFoundException,MethodNotSupportedException,NoClassDefNotFound這個(gè)時(shí)候很多情況下依賴開發(fā)人員的經(jīng)驗(yàn)手動(dòng)去解決,同時(shí)我們也可以依賴一些開發(fā)工具去幫助我們排查問(wèn)題,如:
Eclipse / IntelliJ 開發(fā)工具中的Dependency Analyzer
他可以展示所有的依賴項(xiàng)并協(xié)助開發(fā)人員定位到有沖突的庫(kù)。
當(dāng)您檢測(cè)哪些庫(kù)包含導(dǎo)致問(wèn)題的依賴項(xiàng)時(shí),需要從我們的依賴項(xiàng)管理文件(pom.xml或build.gradle)中排除所有包含不同版本依賴項(xiàng)的庫(kù)。
maven-enforcer-plugin插件
Maven提供了Maven-Enforcer-Plugin插件,用來(lái)校驗(yàn)約定遵守情況(或者說(shuō)校驗(yàn)開發(fā)環(huán)境)。比如JDK的版本,Maven的版本,開發(fā)環(huán)境(Linux,Windows等),依賴jar包的版本等等
插件使用只需要在pom中引入即可:
<plugin> <groupId>org.apache.maven.plugins</groupId> <artifactId>maven-enforcer-plugin</artifactId> <version>1.3.1</version> <executions> <execution> <id>enforce</id> <configuration> <rules> <DependencyConvergence/> </rules> </configuration> <goals> <goal>enforce</goal> </goals> </execution> </executions> </plugin>
在進(jìn)行mvn clean package的時(shí)候,會(huì)在console中打印出來(lái)沖突的jar版本和其父pom,如下:
[INFO] --- maven-enforcer-plugin:1.3.1:enforce (enforce) @ uaf-uafei-provider --- [WARNING] Dependency convergence error for com.google.guava:guava:16.0 paths to dependency are: +-com.uaf.uafei:uaf-uafei-provider:0.2.09-SNAPSHOT +-com.uaf:microservice-sleuth:0.2.09-SNAPSHOT +-org.springframework.cloud:spring-cloud-starter-openfeign:2.1.5.RELEASE +-io.github.openfeign:feign-hystrix:10.4.0 +-com.netflix.archaius:archaius-core:0.7.6 +-com.google.guava:guava:16.0 and +-com.uaf.uafei:uaf-uafei-provider:0.2.09-SNAPSHOT +-com.uaf:microservice-apollo:0.2.09-SNAPSHOT +-com.google.inject:guice:4.1.0 +-com.google.guava:guava:19.0 [WARNING] Rule 0: org.apache.maven.plugins.enforcer.DependencyConvergence failed with message: Failed while enforcing releasability the error(s) are [ Dependency convergence error for com.google.guava:guava:16.0 paths to dependency are: +-com.uaf.uafei:uaf-uafei-provider:0.2.09-SNAPSHOT +-com.uaf:microservice-sleuth:0.2.09-SNAPSHOT +-org.springframework.cloud:spring-cloud-starter-openfeign:2.1.5.RELEASE +-io.github.openfeign:feign-hystrix:10.4.0 +-com.netflix.archaius:archaius-core:0.7.6 +-com.google.guava:guava:16.0 and +-com.uaf.uafei:uaf-uafei-provider:0.2.09-SNAPSHOT +-com.uaf:microservice-apollo:0.2.09-SNAPSHOT +-com.google.inject:guice:4.1.0 +-com.google.guava:guava:19.0 ]
以上就是Java項(xiàng)目中怎么避免循環(huán)依賴,小編相信有部分知識(shí)點(diǎn)可能是我們?nèi)粘9ぷ鲿?huì)見到或用到的。希望你能通過(guò)這篇文章學(xué)到更多知識(shí)。更多詳情敬請(qǐng)關(guān)注創(chuàng)新互聯(lián)行業(yè)資訊頻道。
分享題目:Java項(xiàng)目中怎么避免循環(huán)依賴
瀏覽地址:http://aaarwkj.com/article48/jjihep.html
成都網(wǎng)站建設(shè)公司_創(chuàng)新互聯(lián),為您提供企業(yè)網(wǎng)站制作、網(wǎng)站設(shè)計(jì)、營(yíng)銷型網(wǎng)站建設(shè)、電子商務(wù)、網(wǎng)站制作、網(wǎng)站設(shè)計(jì)公司
聲明:本網(wǎng)站發(fā)布的內(nèi)容(圖片、視頻和文字)以用戶投稿、用戶轉(zhuǎn)載內(nèi)容為主,如果涉及侵權(quán)請(qǐng)盡快告知,我們將會(huì)在第一時(shí)間刪除。文章觀點(diǎn)不代表本網(wǎng)站立場(chǎng),如需處理請(qǐng)聯(lián)系客服。電話:028-86922220;郵箱:631063699@qq.com。內(nèi)容未經(jīng)允許不得轉(zhuǎn)載,或轉(zhuǎn)載時(shí)需注明來(lái)源: 創(chuàng)新互聯(lián)