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

歡迎訪問 生活随笔!

生活随笔

當(dāng)前位置: 首頁 > 编程资源 > 编程问答 >内容正文

编程问答

007_Maven依赖管理

發(fā)布時(shí)間:2025/5/22 编程问答 14 豆豆
生活随笔 收集整理的這篇文章主要介紹了 007_Maven依赖管理 小編覺得挺不錯(cuò)的,現(xiàn)在分享給大家,幫大家做個(gè)參考.

1. Maven一個(gè)核心的特性就是依賴管理。當(dāng)我們處理多模塊的項(xiàng)目(包含成百上千個(gè)模塊或者子項(xiàng)目), 模塊間的依賴關(guān)系就變得非常復(fù)雜, 管理也變得很困難。針對(duì)此種情形, Maven提供了一種高度控制的方法。

2. 可傳遞性依賴

2.1. 一種相當(dāng)常見的情況, 比如說: A依賴于其他庫B; 另外一個(gè)項(xiàng)目C想要使用A, 那么C項(xiàng)目也可以使用庫B。

2.2. Maven可以避免去搜索所有所需庫的需求。Maven通過讀取項(xiàng)目文件(pom.xml), 找出它們項(xiàng)目之間的依賴關(guān)系。

2.3. 我們需要做的只是在每個(gè)項(xiàng)目的pom中定義好直接的依賴關(guān)系。其他的事情Maven會(huì)幫我們搞定。

2.4. 通過可傳遞性的依賴, 所有被包含的庫的圖形會(huì)快速的增長。當(dāng)有重復(fù)庫時(shí), 可能出現(xiàn)的情形將會(huì)持續(xù)上升。Maven提供一些功能來控制可傳遞的依賴的程度。

3. 依賴調(diào)節(jié)

3.1. 決定當(dāng)多個(gè)手動(dòng)創(chuàng)建的版本同時(shí)出現(xiàn)時(shí), 哪個(gè)依賴版本將會(huì)被使用。

3.2. 我們先導(dǎo)入spring-context-4.2.4.RELEASE.jar這個(gè)jar包, 然后再導(dǎo)入spring-webmvc-4.2.5.RELEASE.jar這個(gè)jar包, 這兩個(gè)jar包之間存在多個(gè)相同jar包的相互依賴關(guān)系, 實(shí)際生效的spring-webmvc和spring-web是4.2.5的, spring-aop、spring-beans、spring-context、spring-core和spring-expression是4.2.4的。

3.3. 那么我們先導(dǎo)入spring-webmvc-4.2.5.RELEASE.jar這個(gè)jar包, 然后再導(dǎo)入spring-context-4.2.4.RELEASE.jar這個(gè)jar包, spring-beans、spring-core和spring-expression變成了是4.2.5的。我們注意看spring-beans、spring-core和spring-expression這三個(gè)包在spring-webmvc-4.2.5.RELEASE.jar和spring-context-4.2.4.RELEASE.jar中的最高層次都是2。如果兩個(gè)依賴版本在依賴樹里的深度是一樣的時(shí)候, 第一個(gè)被聲明的依賴將會(huì)被使用。?

3.4. 首先導(dǎo)入spring-webmvc-4.2.5.RELEASE.jar這個(gè)jar包, 然后再導(dǎo)入spring-context-4.2.4.RELEASE.jar這個(gè)jar包, 最終生效的spring-context是4.2.4的。spring-context在spring-webmvc-4.2.5.RELEASE.jar中的最高層次是2, 在spring-context-4.2.4.RELEASE.jar中的最高層次是1。依賴層次優(yōu)先原則, 使用層次最高的。?

4. 依賴排除

4.1. 任何可傳遞的依賴都可以通過 "exclusion" 元素被排除在外。

4.2. 我們想使用Slf4j和logback日志的日志模式, 就不需要commons-logging日志包, 可以剔除它。

4.3. 右鍵commons-logging-1.2.jar——>Exclude Maven Artifact...

4.4. 點(diǎn)擊Ok按鈕?

4.5. 在pom.xml的spring-context-4.2.4.RELEASE.jar的依賴坐標(biāo)中多出了exclusions節(jié)點(diǎn), 該節(jié)點(diǎn)剔除了commons-logging包。我們添加上Slf4j和logback相關(guān)日志包。?

4.6. 實(shí)際生效的沒有commons-logging-1.2.jar包了。?

5. 依賴可選

5.1. 任何可傳遞的依賴可以被標(biāo)記為可選的, 通過使用"optional"元素。例如: Shop_Web依賴Shop_Service, Shop_Service依賴Shop_Dao。因此, Shop_Service可以標(biāo)記Shop_Dao為可選的, 這樣Shop_Web就可以不再使用Shop_Dao。

5.2. Shop_Service依賴Shop_Dao。

?5.3. Shop_Web依賴Shop_Service。

?5.4. Shop_Web同時(shí)依賴了Shop_Dao和Shop_Service。

5.5. 在Shop_Service中, 依賴Shop_Dao時(shí), 標(biāo)記為可選的。?

5.6. 這樣Shop_Web就可以不再使用Shop_Dao?

6. 定義版本常量

6.1. 可以使用properties標(biāo)簽定義版本遍歷, 一次定義多次使用, 版本變遷的時(shí)候只用修改版本變量, 達(dá)到對(duì)版本的管理。

7. 版本鎖定

7.1. 可以定義dependencyManagement標(biāo)簽對(duì)jar的版本進(jìn)行鎖定, 這樣子工程再添加相同的jar的依賴的時(shí)候只能使用此版本。

?8. 依賴范圍

8.1. 傳遞依賴發(fā)現(xiàn)可以通過使用如下的依賴范圍來得到限制:

8.2. Tomcat(網(wǎng)絡(luò)服務(wù)器)也包含有jsp-api-2.0.jar, 項(xiàng)目運(yùn)行后, 第一次編譯時(shí)使用Tomcat中的jar。編寫項(xiàng)目的時(shí)候, Eclipse找不到相關(guān)類( Eclipse自動(dòng)編譯), 所以要添加此依賴, 但是作用域只能是provided, 如果是compile和runtime項(xiàng)目運(yùn)行后會(huì)和Tomcat中的jar沖突。?

8.3. 運(yùn)行時(shí)是在編譯的時(shí)候不需要相關(guān)類, 但是運(yùn)行的時(shí)候需要相關(guān)類, 經(jīng)典的例子是Mysql驅(qū)動(dòng)包, 編寫代碼的時(shí)候使用Java的標(biāo)準(zhǔn)類即可, 連接Mysql數(shù)據(jù)庫的時(shí)候必須使用驅(qū)動(dòng)包。?

?8.4. 測(cè)試作用域一般是我們的junit。

8.5. 系統(tǒng)階段, 添加外部依賴使用。?

《新程序員》:云原生和全面數(shù)字化實(shí)踐50位技術(shù)專家共同創(chuàng)作,文字、視頻、音頻交互閱讀

總結(jié)

以上是生活随笔為你收集整理的007_Maven依赖管理的全部內(nèi)容,希望文章能夠幫你解決所遇到的問題。

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