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

Maven中的<scope>元素使用解讀

 更新時間:2025年09月03日 14:49:44   作者:minh_coo  
Maven的<scope>控制依賴范圍和生命周期,影響編譯、測試、運行階段的可見性及打包,常見類型包括compile、provided、runtime等,用于管理依賴傳遞與沖突解決,如使用exclusions排除沖突

Maven的<scope>元素

概述

在 Maven 中,<scope> 元素用于控制依賴項的作用范圍生命周期,即定義依賴項在項目的編譯、測試、運行等階段的可見性,以及是否會被打包到最終產(chǎn)物中。

正確使用 <scope> 可以幫助我們優(yōu)化項目的構(gòu)建過程,減少不必要的依賴沖突,并提高構(gòu)建效率。

常見的<scope>取值及其含義

scope作用范圍場景示例
compile默認值。覆蓋編譯(compile)、測試(test)、運行(runtime)所有階段,依賴會被直接包含到項目的 classpath 中,且會隨著項目打包(如 JAR/WAR)一起發(fā)布。大多數(shù)業(yè)務依賴(如 Spring、Jackson 等)默認使用此范圍
provided僅在編譯(compile)和測試(test)階段有效,運行(runtime)階段由外部環(huán)境(如應用服務器)提供依賴,依賴不會被打包到項目產(chǎn)物中(因為運行時由外部提供)。容器提供的依賴:Servlet API(如 javax.servlet:javax.servlet-api)
runtime在測試(test)和運行(runtime)階段有效,編譯(compile)階段不可用。JDBC 驅(qū)動(如 mysql:mysql-connector-java)
test僅在測試(test)階段有效(包括測試代碼的編譯和運行),依賴不會被打包到最終產(chǎn)物中,也不會影響主代碼的運行。測試框架(如 JUnit、Mockito)
system與 provided 類似(僅編譯和測試階段有效),但依賴需要顯式指定本地文件路徑(非 Maven 倉庫),通過 <systemPath> 手動指定依賴的本地路徑。不推薦使用,Maven 3.0 后已標記為過時,建議改用 provided 或自定義倉庫
import在 <dependencyManagement> 中使用。僅用于導入其他 POM 的 <dependencyManagement> 依賴配置,不會實際添加依賴到當前項目,而是將目標 POM 的依賴管理規(guī)則合并到當前項目的依賴管理中。導入 Spring Boot 的 spring-boot-dependencies

依賴傳遞性

Maven 依賴的傳遞性會受 <scope> 影響。

假設 A → B → C,即 A 依賴 B,B 依賴 C:

  • compile:C 會傳遞給 A(A 的 compile 范圍)
  • runtime:C 會傳遞給 A(A 的 runtime 范圍)
  • test / provided:C 不會傳遞給 A(僅 B 自己需要)

依賴沖突

當多個依賴項引入相同的依賴,這時就可能出現(xiàn)版本沖突。

如:在projectA引入B依賴,B依賴又引入C依賴(版本1.0),假設這時projectA再引入D依賴,且D依賴也引入C依賴(版本2.0)。這時就會出現(xiàn)依賴沖突。

沖突解決原則

1、就近原則

A --> B --> C(版本1.0)

A --> C(版本2.0)

這時會引入2.0的C

2、第一聲明者原則

A -> B -> C(版本1.0)

A -> D -> C(版本2.0)

這時會引入1.0的C

解決方案

使用<exclusions> 標簽排除沖突的依賴,只保留一個依賴。

如:

        <dependency>
            <groupId>org.springframework.boot</groupId>
            <artifactId>spring-boot-starter-webflux</artifactId>
            <exclusions>
                <exclusion>
                    <groupId>org.hibernate.validator</groupId>
                    <artifactId>hibernate-validator</artifactId>
                </exclusion>
            </exclusions>
        </dependency>

總結(jié)

以上為個人經(jīng)驗,希望能給大家一個參考,也希望大家多多支持腳本之家。

相關(guān)文章

  • Java收集的雪花算法代碼詳解

    Java收集的雪花算法代碼詳解

    這篇文章主要介紹了Java實現(xiàn)雪花算法的詳細代碼,文中通過示例代碼介紹的非常詳細,對大家的學習或者工作具有一定的參考學習價值,需要的朋友們下面隨著小編來一起學習學習吧
    2021-10-10
  • 面試時必問的JVM運行時數(shù)據(jù)區(qū)詳解

    面試時必問的JVM運行時數(shù)據(jù)區(qū)詳解

    這篇文章主要介紹了JVM運行時數(shù)據(jù)區(qū)原理解析,文中通過示例代碼介紹的非常詳細,對大家的學習或者工作具有一定的參考學習價值,需要的朋友可以參考下
    2021-08-08
  • Springboot任務之異步任務的使用詳解

    Springboot任務之異步任務的使用詳解

    今天學習了一個新技能SpringBoot實現(xiàn)異步任務,所以特地整理了本篇文章,文中有非常詳細的介紹及代碼示例,需要的朋友可以參考下
    2021-06-06
  • Mybatis-Plus 映射匹配兼容性的問題解決

    Mybatis-Plus 映射匹配兼容性的問題解決

    本文主要介紹了Mybatis-Plus 映射匹配兼容性的問題解決,文中通過示例代碼介紹的非常詳細,對大家的學習或者工作具有一定的參考學習價值,需要的朋友們下面隨著小編來一起學習學習吧
    2023-01-01
  • Spring Batch入門教程篇

    Spring Batch入門教程篇

    這篇文章主要給大家介紹了Spring Batch入門的相關(guān)資料,文中介紹的非常詳細,對大家具有一定的參考學習價值,需要的朋友們下面跟著小編一起來學習學習吧。
    2017-06-06
  • SpringBoot2.0 ZipKin示例代碼

    SpringBoot2.0 ZipKin示例代碼

    這篇文章主要介紹了SpringBoot2.0 ZipKin示例代碼,詳細的介紹了什么是ZipKin以及SpringBoot2.0 ZipKin示例,具有一定的參考價值,感興趣的小伙伴們可以參考一下
    2018-11-11
  • 解讀JDK1.8?默認使用什么垃圾收集器

    解讀JDK1.8?默認使用什么垃圾收集器

    這篇文章主要介紹了解讀JDK1.8?默認使用什么垃圾收集器,具有很好的參考價值,希望對大家有所幫助。如有錯誤或未考慮完全的地方,望不吝賜教
    2023-05-05
  • 簡單的用java實現(xiàn)讀/寫文本文件的示例

    簡單的用java實現(xiàn)讀/寫文本文件的示例

    同時也展示了如果從輸入流中讀出來內(nèi)容寫入輸出流中(僅限文本流) 三個例子可以獨立存在,所以根據(jù)需要只看其中一個就行了。
    2008-07-07
  • java中Hutool包的常用方法總結(jié)

    java中Hutool包的常用方法總結(jié)

    這篇文章主要為大家詳細介紹了java在工作中中Hutool包的一些常用方法總結(jié),文中的示例代碼講解詳細,感興趣的小伙伴可以跟隨小編一起學習一下
    2023-12-12
  • 解決Spring Data Jpa 實體類自動創(chuàng)建數(shù)據(jù)庫表失敗問題

    解決Spring Data Jpa 實體類自動創(chuàng)建數(shù)據(jù)庫表失敗問題

    這篇文章主要介紹了解決Spring Data Jpa 實體類自動創(chuàng)建數(shù)據(jù)庫表失敗問題,具有很好的參考價值,希望對大家有所幫助。如有錯誤或未考慮完全的地方,望不吝賜教
    2021-09-09

最新評論

交口县| 辉南县| 余庆县| 林州市| 革吉县| 桐城市| 元氏县| 澄城县| 蒲城县| 沁水县| 津南区| 杨浦区| 平湖市| 容城县| 武鸣县| 宿迁市| 吴堡县| 南部县| 鱼台县| 泽州县| 阳谷县| 白河县| 上思县| 广河县| 开封市| 岗巴县| 长海县| 绍兴市| 闽清县| 嵩明县| 洛隆县| 万荣县| 云霄县| 宜丰县| 始兴县| 芦溪县| 襄汾县| 渭源县| 德保县| 临汾市| 巴中市|