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

歡迎訪問 生活随笔!

生活随笔

當前位置: 首頁 > 编程资源 > 编程问答 >内容正文

编程问答

007_Maven依赖管理

發布時間:2025/5/22 编程问答 24 豆豆
生活随笔 收集整理的這篇文章主要介紹了 007_Maven依赖管理 小編覺得挺不錯的,現在分享給大家,幫大家做個參考.

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

2. 可傳遞性依賴

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

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

2.3. 我們需要做的只是在每個項目的pom中定義好直接的依賴關系。其他的事情Maven會幫我們搞定。

2.4. 通過可傳遞性的依賴, 所有被包含的庫的圖形會快速的增長。當有重復庫時, 可能出現的情形將會持續上升。Maven提供一些功能來控制可傳遞的依賴的程度。

3. 依賴調節

3.1. 決定當多個手動創建的版本同時出現時, 哪個依賴版本將會被使用。

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

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

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

4. 依賴排除

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

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

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

4.4. 點擊Ok按鈕?

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

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

5. 依賴可選

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

5.2. Shop_Service依賴Shop_Dao。

?5.3. Shop_Web依賴Shop_Service。

?5.4. Shop_Web同時依賴了Shop_Dao和Shop_Service。

5.5. 在Shop_Service中, 依賴Shop_Dao時, 標記為可選的。?

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

6. 定義版本常量

6.1. 可以使用properties標簽定義版本遍歷, 一次定義多次使用, 版本變遷的時候只用修改版本變量, 達到對版本的管理。

7. 版本鎖定

7.1. 可以定義dependencyManagement標簽對jar的版本進行鎖定, 這樣子工程再添加相同的jar的依賴的時候只能使用此版本。

?8. 依賴范圍

8.1. 傳遞依賴發現可以通過使用如下的依賴范圍來得到限制:

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

8.3. 運行時是在編譯的時候不需要相關類, 但是運行的時候需要相關類, 經典的例子是Mysql驅動包, 編寫代碼的時候使用Java的標準類即可, 連接Mysql數據庫的時候必須使用驅動包。?

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

8.5. 系統階段, 添加外部依賴使用。?

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

總結

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

如果覺得生活随笔網站內容還不錯,歡迎將生活随笔推薦給好友。