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

高效解決Maven依賴沖突的5種方法(操作步驟)

 更新時間:2025年07月09日 09:26:52   作者:代碼的余溫  
本文給大家介紹高效解決Maven依賴沖突的5種方法,結(jié)合具體場景說明操作步驟,感興趣的朋友一起看看吧

在 Maven 中排除依賴沖突主要有以下 5 種方法,結(jié)合具體場景說明操作步驟:

??一、基礎(chǔ)排除法(<exclusions>標(biāo)簽)

適用場景:排除直接依賴中的傳遞性沖突包
示例:排除 spring-boot-starter-web 中的 Tomcat 依賴

<dependency>  
    <groupId>org.springframework.boot</groupId>  
    <artifactId>spring-boot-starter-web</artifactId>  
    <exclusions>  
        <exclusion>  
            <groupId>org.springframework.boot</groupId>  
            <artifactId>spring-boot-starter-tomcat</artifactId>  
        </exclusion>  
    </exclusions>  
</dependency>  

要點

  1. 無需指定被排除依賴的版本
  2. 僅作用于當(dāng)前聲明的依賴項

??二、多層級依賴排除

適用場景:沖突由間接依賴(非直接引入)引起
示例:模塊 A 依賴模塊 B,而 B 傳遞了沖突庫 hsqldb

<dependency>  
    <groupId>com.example</groupId>  
    <artifactId>module-a</artifactId>  
    <exclusions>  
        <!-- 排除模塊A傳遞的hsqldb -->  
        <exclusion>  
            <groupId>org.hsqldb</groupId>  
            <artifactId>hsqldb</artifactId>  
        </exclusion>  
    </exclusions>  
</dependency>  

原理

  • 依賴樹:A → B → hsqldb
  • 在 A 的依賴聲明中排除 hsqldb 即可切斷傳遞鏈

??三、全局依賴管理(dependencyManagement)

適用場景:統(tǒng)一管理多模塊項目的依賴版本
示例:父 POM 強(qiáng)制所有子模塊使用安全的 log4j 版本

<!-- 父pom.xml -->  
<dependencyManagement>  
    <dependencies>  
        <dependency>  
            <groupId>org.apache.logging.log4j</groupId>  
            <artifactId>log4j-core</artifactId>  
            <version>2.17.1</version> <!-- 安全版本 -->  
        </dependency>  
    </dependencies>  
</dependencyManagement>  

效果:子模塊無需聲明版本號,自動繼承父 POM 的版本

???四、高級排除技巧

1. 空包替換法(徹底排除)

場景:杜絕某依賴被任何途徑引入(如高危漏洞庫)
操作

  1. 部署空包到私服(如 log4j:log4j:1.0-empty
  2. 在頂層 POM 強(qiáng)制依賴空包:
<dependency>  
    <groupId>log4j</groupId>  
    <artifactId>log4j</artifactId>  
    <version>1.0-empty</version>  
</dependency>  

原理:Maven 依賴仲裁優(yōu)先選擇最短路徑的空包版本

2. Scope 排除法

場景:排除運(yùn)行時依賴但保留編譯能力

<dependency>  
    <groupId>log4j</groupId>  
    <artifactId>log4j</artifactId>  
    <scope>provided</scope> <!-- 或 test -->  
</dependency>  

效果

  • provided:編譯有效,不打包
  • test:僅測試有效,不打包

??五、強(qiáng)制檢查插件(maven-enforcer-plugin)

場景:防止其他成員意外引入沖突依賴
配置:在父 POM 添加規(guī)則

<plugin>  
    <groupId>org.apache.maven.plugins</groupId>  
    <artifactId>maven-enforcer-plugin</artifactId>  
    <executions>  
        <execution>  
            <id>ban-conflict-lib</id>  
            <configuration>  
                <rules>  
                    <bannedDependencies>  
                        <excludes>  
                            <exclude>com.alibaba:fastjson</exclude> <!-- 禁止引入組件 -->  
                        </excludes>  
                        <searchTransitive>true</searchTransitive> <!-- 檢查傳遞依賴 -->  
                    </bannedDependencies>  
                </rules>  
            </configuration>  
        </execution>  
    </executions>  
</plugin>  

效果:若有人引入 fastjson,構(gòu)建直接失敗

?? 排除依賴工具對比

方法適用場景優(yōu)勢局限性
<exclusions>簡單直接依賴沖突精準(zhǔn)排除單個依賴需手動定位沖突源
dependencyManagement多模塊版本統(tǒng)一全局版本控制不適用于非版本沖突場景
空包替換徹底封殺高危依賴一勞永逸需私服權(quán)限,維護(hù)成本高
Enforcer 插件團(tuán)隊協(xié)作防誤引入強(qiáng)制規(guī)范,提前攔截配置復(fù)雜

優(yōu)先使用基礎(chǔ)排除法,對團(tuán)隊協(xié)作項目推薦 dependencyManagement + Enforcer 插件組合 。
排查依賴樹命令:mvn dependency:tree -Dincludes=groupId:artifactId

到此這篇關(guān)于5種高效解決Maven依賴沖突的方法的文章就介紹到這了,更多相關(guān)Maven依賴沖突內(nèi)容請搜索腳本之家以前的文章或繼續(xù)瀏覽下面的相關(guān)文章希望大家以后多多支持腳本之家!

相關(guān)文章

  • Docker部署SpringBoot項目教程(完整版)

    Docker部署SpringBoot項目教程(完整版)

    這篇文章主要介紹了Docker部署SpringBoot項目教程,具有很好的參考價值,希望對大家有所幫助,如有錯誤或未考慮完全的地方,望不吝賜教
    2025-06-06
  • MyBatis-Plus如何實現(xiàn)自動加密解密

    MyBatis-Plus如何實現(xiàn)自動加密解密

    這篇文章主要介紹了MyBatis-Plus實現(xiàn)自動加密解密方式,具有很好的參考價值,希望對大家有所幫助。如有錯誤或未考慮完全的地方,望不吝賜教
    2021-09-09
  • Spring Boot 會員管理系統(tǒng)之處理文件上傳功能

    Spring Boot 會員管理系統(tǒng)之處理文件上傳功能

    Spring Boot會員管理系統(tǒng)的中,需要涉及到Spring框架,SpringMVC框架,Hibernate框架,thymeleaf模板引擎。這篇文章主要介紹了Spring Boot會員管理系統(tǒng)之處理文件上傳功能,需要的朋友可以參考下
    2018-03-03
  • java中Vector的詳細(xì)說明

    java中Vector的詳細(xì)說明

    Vector是Java早期的線程安全動態(tài)數(shù)組,支持自動擴(kuò)容和有序可重復(fù)元素,因同步機(jī)制性能較低,已被ArrayList等替代,現(xiàn)代開發(fā)中,推薦使用ArrayList或并發(fā)容器而非Vector
    2025-10-10
  • 詳談Java中Object類中的方法以及finalize函數(shù)作用

    詳談Java中Object類中的方法以及finalize函數(shù)作用

    下面小編就為大家?guī)硪黄斦凧ava中Object類中的方法以及finalize函數(shù)作用。小編覺得挺不錯的,現(xiàn)在就分享給大家,也給大家做個參考。一起跟隨小編過來看看吧
    2017-04-04
  • Java的CGLIB動態(tài)代理深入解析

    Java的CGLIB動態(tài)代理深入解析

    這篇文章主要介紹了Java的CGLIB動態(tài)代理深入解析,CGLIB是強(qiáng)大的、高性能的代碼生成庫,被廣泛應(yīng)用于AOP框架,它底層使用ASM來操作字節(jié)碼生成新的類,為對象引入間接級別,以控制對象的訪問,需要的朋友可以參考下
    2023-11-11
  • JAVA編程實現(xiàn)TCP網(wǎng)絡(luò)通訊的方法示例

    JAVA編程實現(xiàn)TCP網(wǎng)絡(luò)通訊的方法示例

    這篇文章主要介紹了JAVA編程實現(xiàn)TCP網(wǎng)絡(luò)通訊的方法,簡單說明了TCP通訊的原理并結(jié)合具體實例形式分析了java實現(xiàn)TCP通訊的步驟與相關(guān)操作技巧,需要的朋友可以參考下
    2017-08-08
  • SpringBoot接口獲取參數(shù)的常用注解詳解

    SpringBoot接口獲取參數(shù)的常用注解詳解

    SpringBoot 接口獲取參數(shù)的注解非常豐富,這篇文章主要為大家詳細(xì)介紹了一些常用參數(shù)注解的使用,文中的示例代碼講解詳細(xì),感興趣的小伙伴可以了解下
    2026-01-01
  • java字符串切割實例學(xué)習(xí)(獲取文件名)

    java字符串切割實例學(xué)習(xí)(獲取文件名)

    在Java中處理一些路徑相關(guān)的問題的時候,如要取出ie瀏覽器上傳文件的文件名,由于ie會把整個文件路徑都作為文件名上傳,需要用java.lang.String中的replaceAll或者split來處理,下面看看使用方法
    2013-12-12
  • 使用EasyExcel實現(xiàn)簡單的Excel表格解析操作

    使用EasyExcel實現(xiàn)簡單的Excel表格解析操作

    這篇文章主要介紹了如何使用EasyExcel完成簡單的表格解析操作,同時實現(xiàn)了大量數(shù)據(jù)情況下數(shù)據(jù)的分次批量入庫,并記錄每條數(shù)據(jù)入庫的狀態(tài),感興趣的可以了解下
    2025-03-03

最新評論

正宁县| 翁牛特旗| 武夷山市| 张家川| 东平县| 达日县| 新绛县| 登封市| 宁强县| 健康| 西平县| 邻水| 萨迦县| 施秉县| 连平县| 潼关县| 凌云县| 共和县| 陆川县| 东阳市| 英吉沙县| 克山县| 泊头市| 科尔| 五指山市| 洮南市| 和平区| 龙州县| 通化市| 辛集市| 丰城市| 越西县| 合山市| 新乡市| 中山市| 任丘市| 茶陵县| 寻甸| 延边| 木兰县| 永胜县|