最新国产好看的视频,伊人天堂AV在线,国产Aaaaaa视频,蜜臀视频在线观看一区,人妻av色图,密臀久久久精品影片,青青视频免费观看毛片,久草在线观看视,国产三级精品色情在线

淺談Maven 依賴作用域實戰(zhàn)避坑指南

 更新時間:2026年01月19日 09:10:10   作者:練拳百萬陳平安  
本文分析了Maven項目中依賴作用域配置的常見誤區(qū)及解決方案,文中通過示例代碼介紹的非常詳細,對大家的學習或者工作具有一定的參考學習價值,需要的朋友們下面隨著小編來一起學習學習吧

在 Maven 項目開發(fā)中,依賴作用域的配置直接影響項目的編譯、測試和打包結果,稍有不慎就會引發(fā) ClassNotFoundException、依賴包冗余等問題。結合日常開發(fā)場景,本文整理了常見的作用域使用誤區(qū)和解決方案,幫你精準避坑。

一、 高頻誤區(qū)與解決方案

誤區(qū) 1:濫用compile作用域,導致打包產(chǎn)物臃腫

現(xiàn)象:把 test、provided 類型的依賴(如 JUnit、Servlet API)也配置為 compile 作用域,最終打包的 JAR/WAR 包體積過大,甚至出現(xiàn)依賴沖突。

原因compile 作用域的依賴會被打包到最終產(chǎn)物中,而測試依賴、容器提供的依賴根本不需要隨項目發(fā)布。

解決方案

  • 測試相關依賴(JUnit、Mockito、spring-boot-starter-test),統(tǒng)一使用 test 作用域。
  • 運行環(huán)境已提供的依賴(Servlet API、Tomcat 核心包),使用 provided 作用域。

示例

<!-- 測試依賴用 test 作用域 -->
<dependency>
    <groupId>junit</groupId>
    <artifactId>junit</artifactId>
    <version>4.13.2</version>
    <scope>test</scope>
</dependency>
 
<!-- 容器提供的依賴用 provided 作用域 -->
<dependency>
    <groupId>javax.servlet</groupId>
    <artifactId>javax.servlet-api</artifactId>
    <version>4.0.1</version>
    <scope>provided</scope>
</dependency>

誤區(qū) 2:錯用runtime作用域,導致編譯報錯

現(xiàn)象:將 JDBC 驅動、JSON 解析包等配置為 runtime 作用域,編譯代碼時提示 “找不到類”。

原因runtime 作用域的依賴僅在運行和測試階段生效,不參與編譯,而代碼中如果直接引用了該依賴的類(如 com.mysql.cj.jdbc.Driver),編譯時就會報錯。

解決方案

  • 如果代碼中直接引用依賴的類,必須使用 compile 作用域。
  • 僅當依賴只在運行時需要、編譯時無直接引用時,才用 runtime 作用域(如早期 JDBC 驅動,通過 SPI 機制加載,代碼中無直接引用)。

反例(錯誤)

<dependency>
    <groupId>mysql</groupId>
    <artifactId>mysql-connector-java</artifactId>
    <version>8.0.30</version>
    <scope>runtime</scope>
</dependency>

正例(正確)

<dependency>
    <groupId>mysql</groupId>
    <artifactId>mysql-connector-java</artifactId>
    <version>8.0.30</version>
    <scope>compile</scope>
</dependency>

誤區(qū) 3:Spring Boot 項目中給 starter 依賴加多余作用域

現(xiàn)象:給 spring-boot-starter-web、spring-boot-starter-data-jpa 等 starter 依賴手動添加 runtimeprovided 作用域,導致項目啟動失敗。

原因:Spring Boot starter 依賴是項目核心依賴,需要在編譯、測試、運行全生命周期生效,默認的 compile 作用域是最優(yōu)選擇。

解決方案

  • 所有 Spring Boot starter 依賴,不手動指定作用域(默認 compile 即可)。

示例

<!-- 正確寫法:無需指定 scope -->
<dependency>
    <groupId>org.springframework.boot</groupId>
    <artifactId>spring-boot-starter-web</artifactId>
    <version>3.0.5</version>
</dependency>

二、 不同作用域的使用原則速記

作用域核心原則一句話總結適用場景
compile全生命周期生效,打包進產(chǎn)物項目核心業(yè)務依賴(如 spring-webmvc、Gson)
test僅測試階段生效,不打包單元測試、集成測試相關依賴
provided編譯 / 測試生效,運行時由環(huán)境提供,不打包Servlet API、容器級依賴
runtime運行 / 測試生效,編譯時無直接引用僅通過 SPI 加載、無代碼直接引用的依賴

三、 實戰(zhàn)排查技巧

  1. 查看依賴樹,定位作用域問題執(zhí)行 Maven 命令 mvn dependency:tree,查看依賴的實際作用域,排查是否有依賴被錯誤傳遞。
  2. 打包后校驗產(chǎn)物內(nèi)容解壓打包后的 JAR/WAR 包,檢查 BOOT-INF/lib(Spring Boot 項目)目錄下是否有冗余依賴。
  3. 利用 IDE 提示快速識別問題IDEA/Eclipse 會對 test 作用域的依賴在非測試代碼中引用時給出警告,及時關注這些提示。

到此這篇關于淺談Maven 依賴作用域實戰(zhàn)避坑指南的文章就介紹到這了,更多相關Maven 依賴作用域避坑內(nèi)容請搜索腳本之家以前的文章或繼續(xù)瀏覽下面的相關文章希望大家以后多多支持腳本之家!

您可能感興趣的文章:

相關文章

  • 解決J2EE-session在瀏覽器關閉后失效問題

    解決J2EE-session在瀏覽器關閉后失效問題

    最近做項目使用的是Spring+SpringMVC+Mybatis框架,maven管理目錄的javaweb端系統(tǒng),對于session的一些問題,在此小編給大家分享到腳本之家平臺,需要的朋友參考下吧
    2018-01-01
  • 關于Dubbo初始問題

    關于Dubbo初始問題

    這篇文章主要介紹了關于Dubbo初始問題,具有很好的參考價值,希望對大家有所幫助。如有錯誤或未考慮完全的地方,望不吝賜教
    2023-03-03
  • 詳解如何使用maven生成可以執(zhí)行的jar

    詳解如何使用maven生成可以執(zhí)行的jar

    這篇文章主要介紹了詳解如何使用maven生成可以執(zhí)行的jar,小編覺得挺不錯的,現(xiàn)在分享給大家,也給大家做個參考。一起跟隨小編過來看看吧
    2018-06-06
  • Spring啟動流程源碼解析

    Spring啟動流程源碼解析

    這篇文章主要介紹了Spring啟動流程源碼解析,具有很好的參考價值,希望對大家有所幫助,如有錯誤或未考慮完全的地方,望不吝賜教
    2024-07-07
  • 詳解JVM棧溢出和堆溢出

    詳解JVM棧溢出和堆溢出

    今天帶大家學習的是Java的相關知識,文章圍繞著JVM棧溢出和堆溢出展開,文中有非常詳細的介紹及代碼示例,需要的朋友可以參考下
    2021-06-06
  • Spring boot route Controller接收參數(shù)常用方法解析

    Spring boot route Controller接收參數(shù)常用方法解析

    這篇文章主要介紹了Spring boot route Controller接收參數(shù)常用方法解析,文中通過示例代碼介紹的非常詳細,對大家的學習或者工作具有一定的參考學習價值,需要的朋友可以參考下
    2020-10-10
  • Java中csv文件讀寫超詳細分析

    Java中csv文件讀寫超詳細分析

    CSV是一種通用的、相對簡單的文件格式,其文件以純文本形式存儲表格數(shù)據(jù),下面這篇文章主要給大家介紹了關于Java中csv文件讀寫分析的相關資料,文中通過實例代碼介紹的非常詳細,需要的朋友可以參考下
    2023-05-05
  • java遞歸實現(xiàn)拼裝多個api的結果操作方法

    java遞歸實現(xiàn)拼裝多個api的結果操作方法

    本文給大家分享java遞歸實現(xiàn)拼裝多個api的結果的方法,說白了就是好幾個API結果拼裝成的,本文通過實例代碼給大家介紹的非常詳細,需要的朋友參考下吧
    2021-09-09
  • Java 中校驗時間格式的常見方法

    Java 中校驗時間格式的常見方法

    在實際項目開發(fā)中,跟時間參數(shù)打交道是必不可少的,為了保證程序的安全性、健壯性,一般都會對參數(shù)進行校驗,其他類型的參數(shù)校驗很好實現(xiàn),那你知道時間參數(shù)的是怎么校驗的嗎,下面給大家分享Java 中校驗時間格式的方法,感興趣的朋友跟隨小編一起看看吧
    2024-08-08
  • 找不到正確的java_home路徑報錯解決

    找不到正確的java_home路徑報錯解決

    本文主要介紹了找不到正確的java_home路徑報錯解決,文中通過示例代碼介紹的非常詳細,對大家的學習或者工作具有一定的參考學習價值,需要的朋友們下面隨著小編來一起學習學習吧
    2023-07-07

最新評論

赤峰市| 库伦旗| 泗洪县| 伊春市| 城口县| 昭通市| 乐山市| 沾益县| 堆龙德庆县| 土默特左旗| 齐河县| 昌江| 文化| 肥西县| 耿马| 甘洛县| 通辽市| 防城港市| 海门市| 乐亭县| 芜湖市| 临湘市| 平定县| 长丰县| 铅山县| 荔浦县| 渑池县| 滕州市| 建湖县| 静安区| 凤城市| 盱眙县| 屏东市| 南涧| 留坝县| 广元市| 浮梁县| 朝阳市| 康平县| 祁连县| 罗田县|