欧美bbbwbbbw肥妇,免费乱码人妻系列日韩,一级黄片

Maven排除依賴和可選依賴的使用方法

 更新時間:2023年06月06日 11:07:32   作者:小日子呀  
我們知道Maven依賴具有傳遞性,例如A依賴于B,B依賴于C,在不考慮依賴范圍等因素的情況下,Maven會根據(jù)依賴傳遞機制,將間接依賴C 引入到A中,但如果A出于某種原因,希望將間接依賴C排除,那該怎么辦呢,Maven為用戶提供了兩種解決方式排出和可選

排除依賴

假設存在這樣的依賴關系,A 依賴于 B,B 依賴于 X,B 又依賴于 Y。B 實現(xiàn)了兩個特性,其中一個特性依賴于 X,另一個特性依賴于 Y,且兩個特性是互斥的關系,用戶無法同時使用兩個特性,所以 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>
                <!-- 設置排除 -->
                <!-- 排除依賴必須基于直接依賴中的間接依賴設置為可以依賴為 false -->
                <!-- 設置當前依賴中是否使用間接依賴 -->
                <exclusion>
                    <!--設置具體排除-->
                    <groupId>net.biancheng.www</groupId>
                    <artifactId>X</artifactId>
                </exclusion>
            </exclusions>
        </dependency>
    </dependencies>
</project>

關于 exclusions 元素及排除依賴說明如下:

  • 排除依賴是控制當前項目是否使用其直接依賴傳遞下來的接間依賴;
  • exclusions 元素下可以包含若干個 exclusion 子元素,用于排除若干個間接依賴;
  • exclusion 元素用來設置具體排除的間接依賴,該元素包含兩個子元素:groupId 和 artifactId,用來確定需要排除的間接依賴的坐標信息;
  • exclusion 元素中只需要設置 groupId 和 artifactId 就可以確定需要排除的依賴,無需指定版本 version。

可選依賴

與上文的應用場景相同,也是 A 希望排除間接依賴 X,我們還可以在 B 中將 X 設置為可選依賴。

設置可選依賴

在 B 的 POM 關于 X 的依賴聲明中使用 optional 元素,將其設置成可選依賴,示例配置如下。

<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>
            <!--設置可選依賴  -->
            <optional>true</optional>
        </dependency>
    </dependencies>
</project>

關于 optional 元素及可選依賴說明如下:

  • 可選依賴用來控制當前依賴是否向下傳遞成為間接依賴;
  • optional 默認值為 false,表示可以向下傳遞稱為間接依賴;
  • 若 optional 元素取值為 true,則表示當前依賴不能向下傳遞成為間接依賴。

排除依賴 VS 可選依賴 

排除依賴和可選依賴都能在項目中將間接依賴排除在外,但兩者實現(xiàn)機制卻完全不一樣。

  • 排除依賴是控制當前項目是否使用其直接依賴傳遞下來的接間依賴;
  • 可選依賴是控制當前項目的依賴是否向下傳遞;
  • 可選依賴的優(yōu)先級高于排除依賴;
  • 若對于同一個間接依賴同時使用排除依賴和可選依賴進行設置,那么可選依賴的取值必須為 false,否則排除依賴無法生效。

到此這篇關于Maven排除依賴和可選依賴的使用方法的文章就介紹到這了,更多相關Maven排除依賴和可選依賴內(nèi)容請搜索腳本之家以前的文章或繼續(xù)瀏覽下面的相關文章希望大家以后多多支持腳本之家!

相關文章

  • java 算法 6種排序小結(jié)

    java 算法 6種排序小結(jié)

    這篇文章主要介紹了java 算法 6種排序,排序原理及實例代碼給大家介紹的非常詳細,對大家的學習或工作具有一定的參考借鑒價值,需要的朋友可以參考下
    2021-10-10
  • Java生成10個1000以內(nèi)的隨機數(shù)并用消息框顯示數(shù)組內(nèi)容然后求和輸出

    Java生成10個1000以內(nèi)的隨機數(shù)并用消息框顯示數(shù)組內(nèi)容然后求和輸出

    這篇文章主要介紹了Java生成10個1000以內(nèi)的隨機數(shù)并用消息框顯示數(shù)組內(nèi)容然后求和輸出,需要的朋友可以參考下
    2015-10-10
  • Spring入門配置和DL依賴注入實現(xiàn)圖解

    Spring入門配置和DL依賴注入實現(xiàn)圖解

    這篇文章主要介紹了Spring入門配置和DL依賴注入實現(xiàn)圖解,文中通過示例代碼介紹的非常詳細,對大家的學習或者工作具有一定的參考學習價值,需要的朋友可以參考下
    2020-10-10
  • java實現(xiàn)計算器模板及源碼

    java實現(xiàn)計算器模板及源碼

    這篇文章主要為大家詳細介紹了java實現(xiàn)計算器模板及源碼,文中示例代碼介紹的非常詳細,具有一定的參考價值,感興趣的小伙伴們可以參考一下
    2022-06-06
  • 一文帶你搞懂Java中i++ 和 ++i的區(qū)別

    一文帶你搞懂Java中i++ 和 ++i的區(qū)別

    在Java中,i++和++i都用于遞增變量i的值,但它們之間有一個細微的區(qū)別,i++是后綴遞增操作符,++i是前綴遞增操作符,在大多數(shù)情況下,這兩種遞增操作的結(jié)果都是一樣的,但在某些特定的表達式和邏輯中,它們可能會產(chǎn)生不同的效果,本文將帶大家搞清Java中i++ 和 ++i的區(qū)別
    2023-09-09
  • java自定義異常打印內(nèi)容詳解

    java自定義異常打印內(nèi)容詳解

    這篇文章主要為大家詳細介紹了java自定義異常打印內(nèi)容的相關資料,文中示例代碼介紹的非常詳細,具有一定的參考價值,感興趣的小伙伴們可以參考一下
    2019-10-10
  • SpringCache常用注解及key中參數(shù)值為null問題解析

    SpringCache常用注解及key中參數(shù)值為null問題解析

    這篇文章主要介紹了SpringCache常用注解及key中參數(shù)值為null的問題解析,有需要的朋友可以借鑒參考下,希望能夠有所幫助,祝大家多多進步,早日升職加薪
    2023-09-09
  • SpringBoot時區(qū)問題解決以及徹底解決時差問題

    SpringBoot時區(qū)問題解決以及徹底解決時差問題

    這篇文章主要給大家介紹了關于SpringBoot時區(qū)問題解決以及徹底解決時差問題的相關資料,spring?boot作為微服務簡易架構,擁有其自身的特點,快速搭建架構,簡單快捷,需要的朋友可以參考下
    2023-08-08
  • MyBatis中基于別名typeAliases的設置

    MyBatis中基于別名typeAliases的設置

    這篇文章主要介紹了MyBatis中基于別名typeAliases的設置,具有很好的參考價值,希望對大家有所幫助。如有錯誤或未考慮完全的地方,望不吝賜教
    2021-07-07
  • 基于eclipse.ini內(nèi)存設置的問題詳解

    基于eclipse.ini內(nèi)存設置的問題詳解

    本篇文章是對eclipse.ini內(nèi)存設置的問題進行了詳細的分析介紹,需要的朋友參考下
    2013-05-05

最新評論