Maven排除依賴和可選依賴的使用方法
排除依賴
假設(shè)存在這樣的依賴關(guān)系,A 依賴于 B,B 依賴于 X,B 又依賴于 Y。B 實(shí)現(xiàn)了兩個(gè)特性,其中一個(gè)特性依賴于 X,另一個(gè)特性依賴于 Y,且兩個(gè)特性是互斥的關(guān)系,用戶無法同時(shí)使用兩個(gè)特性,所以 A 需要排除 X,此時(shí)就可以在 A 中將間接依賴 X 排除。
排除依賴是通過在 A 中使用 exclusions 元素實(shí)現(xiàn)的,該元素下可以包含若干個(gè) exclusion 子元素,用于排除若干個(gè)間接依賴,示例代碼如下。
<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è)置當(dāng)前依賴中是否使用間接依賴 --> <exclusion> <!--設(shè)置具體排除--> <groupId>net.biancheng.www</groupId> <artifactId>X</artifactId> </exclusion> </exclusions> </dependency> </dependencies> </project>
關(guān)于 exclusions 元素及排除依賴說明如下:
- 排除依賴是控制當(dāng)前項(xiàng)目是否使用其直接依賴傳遞下來的接間依賴;
- exclusions 元素下可以包含若干個(gè) exclusion 子元素,用于排除若干個(gè)間接依賴;
- exclusion 元素用來設(shè)置具體排除的間接依賴,該元素包含兩個(gè)子元素:groupId 和 artifactId,用來確定需要排除的間接依賴的坐標(biāo)信息;
- exclusion 元素中只需要設(shè)置 groupId 和 artifactId 就可以確定需要排除的依賴,無需指定版本 version。
可選依賴
與上文的應(yīng)用場(chǎng)景相同,也是 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 元素及可選依賴說明如下:
- 可選依賴用來控制當(dāng)前依賴是否向下傳遞成為間接依賴;
- optional 默認(rèn)值為 false,表示可以向下傳遞稱為間接依賴;
- 若 optional 元素取值為 true,則表示當(dāng)前依賴不能向下傳遞成為間接依賴。
排除依賴 VS 可選依賴
排除依賴和可選依賴都能在項(xiàng)目中將間接依賴排除在外,但兩者實(shí)現(xiàn)機(jī)制卻完全不一樣。
- 排除依賴是控制當(dāng)前項(xiàng)目是否使用其直接依賴傳遞下來的接間依賴;
- 可選依賴是控制當(dāng)前項(xiàng)目的依賴是否向下傳遞;
- 可選依賴的優(yōu)先級(jí)高于排除依賴;
- 若對(duì)于同一個(gè)間接依賴同時(shí)使用排除依賴和可選依賴進(jìn)行設(shè)置,那么可選依賴的取值必須為 false,否則排除依賴無法生效。
到此這篇關(guān)于Maven排除依賴和可選依賴的使用方法的文章就介紹到這了,更多相關(guān)Maven排除依賴和可選依賴內(nèi)容請(qǐng)搜索腳本之家以前的文章或繼續(xù)瀏覽下面的相關(guān)文章希望大家以后多多支持腳本之家!
相關(guān)文章
Java生成10個(gè)1000以內(nèi)的隨機(jī)數(shù)并用消息框顯示數(shù)組內(nèi)容然后求和輸出
這篇文章主要介紹了Java生成10個(gè)1000以內(nèi)的隨機(jī)數(shù)并用消息框顯示數(shù)組內(nèi)容然后求和輸出,需要的朋友可以參考下2015-10-10Spring入門配置和DL依賴注入實(shí)現(xiàn)圖解
這篇文章主要介紹了Spring入門配置和DL依賴注入實(shí)現(xiàn)圖解,文中通過示例代碼介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友可以參考下2020-10-10SpringCache常用注解及key中參數(shù)值為null問題解析
這篇文章主要介紹了SpringCache常用注解及key中參數(shù)值為null的問題解析,有需要的朋友可以借鑒參考下,希望能夠有所幫助,祝大家多多進(jìn)步,早日升職加薪2023-09-09SpringBoot時(shí)區(qū)問題解決以及徹底解決時(shí)差問題
這篇文章主要給大家介紹了關(guān)于SpringBoot時(shí)區(qū)問題解決以及徹底解決時(shí)差問題的相關(guān)資料,spring?boot作為微服務(wù)簡(jiǎn)易架構(gòu),擁有其自身的特點(diǎn),快速搭建架構(gòu),簡(jiǎn)單快捷,需要的朋友可以參考下2023-08-08MyBatis中基于別名typeAliases的設(shè)置
這篇文章主要介紹了MyBatis中基于別名typeAliases的設(shè)置,具有很好的參考價(jià)值,希望對(duì)大家有所幫助。如有錯(cuò)誤或未考慮完全的地方,望不吝賜教2021-07-07基于eclipse.ini內(nèi)存設(shè)置的問題詳解
本篇文章是對(duì)eclipse.ini內(nèi)存設(shè)置的問題進(jìn)行了詳細(xì)的分析介紹,需要的朋友參考下2013-05-05