Maven排除依賴和可選依賴的使用方法
排除依賴
假設(shè)存在這樣的依賴關(guān)系,A 依賴于 B,B 依賴于 X,B 又依賴于 Y。B 實現(xiàn)了兩個特性,其中一個特性依賴于 X,另一個特性依賴于 Y,且兩個特性是互斥的關(guān)系,用戶無法同時使用兩個特性,所以 A 需要排除 X,此時就可以在 A 中將間接依賴 X 排除。
排除依賴是通過在 A 中使用 exclusions 元素實現(xiàn)的,該元素下可以包含若干個 exclusion 子元素,用于排除若干個間接依賴,示例代碼如下。
<project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd">
<modelVersion>4.0.0</modelVersion>
<groupId>net.biancheng.www</groupId>
<artifactId>A</artifactId>
<version>1.0-SNAPSHOT</version>
<dependencies>
<dependency>
<groupId>net.biancheng.www</groupId>
<artifactId>B</artifactId>
<version>1.0-SNAPSHOT</version>
<exclusions>
<!-- 設(shè)置排除 -->
<!-- 排除依賴必須基于直接依賴中的間接依賴設(shè)置為可以依賴為 false -->
<!-- 設(shè)置當前依賴中是否使用間接依賴 -->
<exclusion>
<!--設(shè)置具體排除-->
<groupId>net.biancheng.www</groupId>
<artifactId>X</artifactId>
</exclusion>
</exclusions>
</dependency>
</dependencies>
</project>關(guān)于 exclusions 元素及排除依賴說明如下:
- 排除依賴是控制當前項目是否使用其直接依賴傳遞下來的接間依賴;
- exclusions 元素下可以包含若干個 exclusion 子元素,用于排除若干個間接依賴;
- exclusion 元素用來設(shè)置具體排除的間接依賴,該元素包含兩個子元素:groupId 和 artifactId,用來確定需要排除的間接依賴的坐標信息;
- exclusion 元素中只需要設(shè)置 groupId 和 artifactId 就可以確定需要排除的依賴,無需指定版本 version。
可選依賴
與上文的應用場景相同,也是 A 希望排除間接依賴 X,我們還可以在 B 中將 X 設(shè)置為可選依賴。
設(shè)置可選依賴
在 B 的 POM 關(guān)于 X 的依賴聲明中使用 optional 元素,將其設(shè)置成可選依賴,示例配置如下。
<project xmlns="http://maven.apache.org/POM/4.0.0"
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/maven-v4_0_0.xsd">
<modelVersion>4.0.0</modelVersion>
<groupId>net.biancheng.www</groupId>
<artifactId>B</artifactId>
<packaging>jar</packaging>
<version>1.0-SNAPSHOT</version>
<dependencies>
<dependency>
<groupId>net.biancheng.www</groupId>
<artifactId>X</artifactId>
<version>1.0-SNAPSHOT</version>
<!--設(shè)置可選依賴 -->
<optional>true</optional>
</dependency>
</dependencies>
</project>關(guān)于 optional 元素及可選依賴說明如下:
- 可選依賴用來控制當前依賴是否向下傳遞成為間接依賴;
- optional 默認值為 false,表示可以向下傳遞稱為間接依賴;
- 若 optional 元素取值為 true,則表示當前依賴不能向下傳遞成為間接依賴。
排除依賴 VS 可選依賴
排除依賴和可選依賴都能在項目中將間接依賴排除在外,但兩者實現(xiàn)機制卻完全不一樣。
- 排除依賴是控制當前項目是否使用其直接依賴傳遞下來的接間依賴;
- 可選依賴是控制當前項目的依賴是否向下傳遞;
- 可選依賴的優(yōu)先級高于排除依賴;
- 若對于同一個間接依賴同時使用排除依賴和可選依賴進行設(shè)置,那么可選依賴的取值必須為 false,否則排除依賴無法生效。
到此這篇關(guān)于Maven排除依賴和可選依賴的使用方法的文章就介紹到這了,更多相關(guān)Maven排除依賴和可選依賴內(nèi)容請搜索腳本之家以前的文章或繼續(xù)瀏覽下面的相關(guān)文章希望大家以后多多支持腳本之家!
相關(guān)文章
如何在IDEA啟動多個Spring Boot工程實例(圖文)
這篇文章主要介紹了如何在IDEA啟動多個Spring Boot工程實例(圖文),文中通過示例代碼介紹的非常詳細,對大家的學習或者工作具有一定的參考學習價值,需要的朋友們下面隨著小編來一起學習學習吧2019-09-09
SpringBoot整合Web開發(fā)之Json數(shù)據(jù)返回的實現(xiàn)
這篇文章主要介紹了SpringBoot整合Web開發(fā)其中Json數(shù)據(jù)返回的實現(xiàn),文中通過示例代碼介紹的非常詳細,對大家的學習或者工作具有一定的參考學習價值,需要的朋友們下面隨著小編來一起學習學習吧2022-08-08
Java基礎(chǔ)之Comparable與Comparator概述
這篇文章主要介紹了Java基礎(chǔ)之Comparable與Comparator詳解,文中有非常詳細的代碼示例,對正在學習java基礎(chǔ)的小伙伴們有非常好的幫助,需要的朋友可以參考下2021-04-04
詳解MyBatis resultType與resultMap中的幾種返回類型
本文主要介紹了MyBatis resultType與resultMap中的幾種返回類型,文中通過示例代碼介紹的非常詳細,具有一定的參考價值,感興趣的小伙伴們可以參考一下2021-09-09
淺析如何將多個SpringBoot項目打包到一個Docker容器中
在現(xiàn)代軟件開發(fā)中,Docker已成為一種流行的容器化技術(shù),能夠簡化應用的部署和管理,本文將詳細介紹如何將多個Spring Boot項目打包到一個Docker容器中,希望對大家有所幫助2024-10-10
Spring @OnApplicationEvent用法示例小結(jié)(典型用法)
這篇文章主要介紹了Spring @OnApplicationEvent用法示例小結(jié),本文通過實例代碼給大家介紹的非常詳細,對大家的學習或工作具有一定的參考借鑒價值,需要的朋友參考下吧2025-06-06

