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

Maven dependencyManagement元素標(biāo)簽的具體使用

 更新時(shí)間:2024年03月28日 14:24:24   作者:懶鳥(niǎo)一枚  
在Maven中dependencyManagement的作用其實(shí)相當(dāng)于一個(gè)對(duì)所依賴(lài)jar包進(jìn)行版本管理的管理器,本文主要介紹了Maven dependencyManagement元素標(biāo)簽的具體使用,感興趣的可以了解一下

我們知道,子模塊可以通過(guò)繼承獲得父模塊中聲明的全部依賴(lài),這樣雖然避免了在各個(gè)子模塊 POM 中重復(fù)進(jìn)行依賴(lài)聲明,但也極有可能造成子模塊中引入一些不必要的依賴(lài)。為此 Maven 引入了 dependencyManagement 來(lái)對(duì)依賴(lài)進(jìn)行管理。

依賴(lài)管理

Maven 可以通過(guò) dependencyManagement 元素對(duì)依賴(lài)進(jìn)行管理,它具有以下 2 大特性:

  • 在該元素下聲明的依賴(lài)不會(huì)實(shí)際引入到模塊中,只有在 dependencies 元素下同樣聲明了該依賴(lài),才會(huì)引入到模塊中。
  • 該元素能夠約束 dependencies 下依賴(lài)的使用,即 dependencies 聲明的依賴(lài)若未指定版本,則使用 dependencyManagement 中指定的版本,否則將覆蓋 dependencyManagement 中的版本。
    例如,修改 App-Data-lib 模塊的 pom.xml 如下。
<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 https://maven.apache.org/xsd/maven-4.0.0.xsd">
    <modelVersion>4.0.0</modelVersion>
    <!--由于不是繼承,所以必須重新添加 groupId 和 version-->
    <groupId>org.example</groupId>
    <artifactId>App-Data-lib</artifactId>
    <version>1.0</version>
    <!--dependencyManagement 標(biāo)簽用于控制子模塊的依賴(lài)版本等信息 -->
    <!-- 該標(biāo)簽只用來(lái)控制版本,不能將依賴(lài)引入 -->
    <dependencyManagement>
        <dependencies>
            <dependency>
                <groupId>log4j</groupId>
                <artifactId>log4j</artifactId>
                <!--引用的properties標(biāo)簽中定義的屬性 -->
                <version>1.2.17</version>
            </dependency>
            <dependency>
                <groupId>junit</groupId>
                <artifactId>junit</artifactId>
                <!--引用的properties標(biāo)簽中定義的屬性 -->
                <version>4.9</version>
                <!-- <scope>test</scope> -->
            </dependency>
            <dependency>
                <groupId>mysql</groupId>
                <artifactId>mysql-connector-java</artifactId>
                <!--引用的properties標(biāo)簽中定義的屬性 -->
                <version>5.1.18</version>
                <scope>runtime</scope>
            </dependency>
            <dependency>
                <groupId>c3p0</groupId>
                <artifactId>c3p0</artifactId>
                <!--引用的properties標(biāo)簽中定義的屬性 -->
                <version>0.9.1</version>
            </dependency>
        </dependencies>
    </dependencyManagement>
    <!--聲明依賴(lài)-->
    <dependencies>
        <dependency>
            <groupId>junit</groupId>
            <artifactId>junit</artifactId>
        </dependency>
    </dependencies>
</project>

在以上配置中,由于 dependencyManagement 元素中已經(jīng)定義完整的依賴(lài)聲明,所以在 dependencies 元素中聲明的依賴(lài)只配置了 groupId 和 artifactId,省略了 version 和 scope。

在實(shí)際的開(kāi)發(fā)過(guò)程中,dependencyManagement 很少會(huì)單獨(dú)使用,通常它需要與 Maven 繼承或依賴(lài)范圍 import 配合使用才能展現(xiàn)它的優(yōu)勢(shì)。

繼承依賴(lài)管理

由于 dependencyManagement 元素是可以被繼承的,因此我們可以在父模塊 POM 中使用 dependencyManagement 元素聲明所有子模塊的依賴(lài),然后在各個(gè)子模塊 POM 使用 dependencies 元素聲明實(shí)際用到的依賴(lài)即可。這樣既可以讓子模塊能夠繼承父模塊的依賴(lài)配置,還能避免將不必要的依賴(lài)引入到子模塊中。

1. 修改父模塊 Root 的 pom.xml 如下。

<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 https://maven.apache.org/xsd/maven-4.0.0.xsd">
    <modelVersion>4.0.0</modelVersion>
    <groupId>org.example</groupId>
    <artifactId>Root</artifactId>
    <version>1.0</version>
    <!--定義的父類(lèi)pom.xml 打包類(lèi)型使pom -->
    <packaging>pom</packaging>
    <properties>
        <!-- 定義一些 maven 變量 -->
        <project.build.sourceEncoding>UTF-8</project.build.sourceEncoding>
        <log4j.version>1.2.17</log4j.version>
        <junit.version>4.9</junit.version>
        <system.version>1.0</system.version>
        <mysql.connector.version>5.1.18</mysql.connector.version>
        <c3p0.version>0.9.1</c3p0.version>
    </properties>
    <!--dependencyManagement 標(biāo)簽用于控制子模塊的依賴(lài)版本等信息 -->
    <!-- 該標(biāo)簽只用來(lái)控制版本,不能將依賴(lài)引入 -->
    <dependencyManagement>
        <dependencies>
            <dependency>
                <groupId>log4j</groupId>
                <artifactId>log4j</artifactId>
                <!--引用的properties標(biāo)簽中定義的變量 -->
                <version>${log4j.version}</version>
            </dependency>
            <dependency>
                <groupId>junit</groupId>
                <artifactId>junit</artifactId>
                <!--引用的properties標(biāo)簽中定義的變量 -->
                <version>${junit.version}</version>
                <!-- <scope>test</scope> -->
            </dependency>
            <dependency>
                <groupId>mysql</groupId>
                <artifactId>mysql-connector-java</artifactId>
                <!--引用的properties標(biāo)簽中定義的變量 -->
                <version>${mysql.connector.version}</version>
                <scope>runtime</scope>
            </dependency>
            <dependency>
                <groupId>c3p0</groupId>
                <artifactId>c3p0</artifactId>
                <!--引用的properties標(biāo)簽中定義的變量 -->
                <version>${c3p0.version}</version>
            </dependency>
        </dependencies>
    </dependencyManagement>
</project>

注:以上配置中,將所有依賴(lài)的版本信息以 Maven 變量(properties)的形式提取出來(lái),這樣不僅消除了一些重復(fù),也使得各個(gè)依賴(lài)的版本信息更加明顯,便于管理。

在父模塊 Root 中使用 dependencyManagement 元素聲明的依賴(lài),既不會(huì)給 Root 模塊引入依賴(lài),也不會(huì)給其子模塊引入依賴(lài),但這段配置是可以被繼承的。

2. 修改子模塊 App-Core-lib 的 pom.xml 如下。

<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 https://maven.apache.org/xsd/maven-4.0.0.xsd">
    <modelVersion>4.0.0</modelVersion>
    <artifactId>App-Core-lib</artifactId>
    <parent>
        <groupId>org.example</groupId>
        <artifactId>Root</artifactId>
        <version>1.0</version>
        <relativePath>../Root</relativePath>
    </parent>
    <dependencies>
        <dependency>
            <groupId>log4j</groupId>
            <artifactId>log4j</artifactId>
        </dependency>
        <dependency>
            <groupId>junit</groupId>
            <artifactId>junit</artifactId>
        </dependency>
        <dependency>
            <groupId>mysql</groupId>
            <artifactId>mysql-connector-java</artifactId>
        </dependency>
        <dependency>
            <groupId>c3p0</groupId>
            <artifactId>c3p0</artifactId>
        </dependency>
    </dependencies>
    <distributionManagement>
        <repository>
            <id>bianchengbang_Release_hosted</id>
            <url>http://localhost:8082/nexus/content/repositories/bianchengbang_Release_hosted/</url>
        </repository>
        <snapshotRepository>
            <id>Snapshot</id>
            <url>http://localhost:8082/nexus/content/repositories/bianchengbang_Snapshot_hosted/</url>
        </snapshotRepository>
    </distributionManagement>
</project>

在子模塊 App-Core-lib 和 App-Data-lib 的 POM 中,所有在 dependencies 元素中聲明的依賴(lài)都只配置了 groupId 和 artifactId,省去了 version 和 scope。之所以能夠省略這些信息,是因?yàn)樗鼈兝^承了父模塊 Root 中 dependencyManagement 的配置,其完整的依賴(lài)聲明已經(jīng)包含在父模塊的 POM 中,子模塊只需要配置 groupId 和 artifactId 就能獲得相應(yīng)的依賴(lài)信息,從而引入正確的依賴(lài)。

使用這種依賴(lài)管理機(jī)制似乎并不能減少太多 POM 配置,但我們?nèi)匀煌扑]使用這種方式,其原因主要有 2 個(gè):

-在父模塊中使用 dependencyManagement 聲明依賴(lài)能夠統(tǒng)一項(xiàng)目?jī)?nèi)依賴(lài)的版本,子模塊無(wú)須聲明版本,也就不會(huì)出現(xiàn)多個(gè)子模塊使用同一依賴(lài)項(xiàng)版本不一致的情況,降低依賴(lài)沖突的幾率。

  • dependencyManagement 聲明的依賴(lài)不會(huì)被實(shí)際引入,子模塊需要什么依賴(lài)就自己引入,增加了靈活性,避免引入一些不必要的依賴(lài)。

導(dǎo)入依賴(lài)管理

因?yàn)?import 依賴(lài)范圍只能與 dependencyManagement 元素配合使用才會(huì)有效,其功能是將目標(biāo) pom.xml 中的 dependencyManagement 配置導(dǎo)入合并到當(dāng)前 pom.xml 的 dependencyManagement 中。

例如,App-Data-lib 模塊想要使用 Root 模塊中的 dependencyManagement 配置,除了通過(guò)繼承或者直接復(fù)制這兩種方式之外,還可以使用 import 依賴(lài)范圍將其導(dǎo)入,具體配置如下。

<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 https://maven.apache.org/xsd/maven-4.0.0.xsd">
    <modelVersion>4.0.0</modelVersion>
    <!--由于不是繼承,所以必須重新添加 groupId 和 version-->
    <groupId>org.example</groupId>
    <artifactId>App-Data-lib</artifactId>
    <version>1.0</version>
    <!--定義依賴(lài)管理-->
    <dependencyManagement>
        <dependencies>
            <!--導(dǎo)入依賴(lài)管理配置-->
            <dependency>
                <groupId>org.example</groupId>
                <artifactId>Root</artifactId>
                <version>1.0</version>
                <!--依賴(lài)范圍為 import-->
                <scope>import</scope>
                <!--類(lèi)型一般為pom-->
                <type>pom</type>
            </dependency>
        </dependencies>
    </dependencyManagement>
    <!--聲明依賴(lài)-->
    <dependencies>
        <dependency>
            <groupId>junit</groupId>
            <artifactId>junit</artifactId>
        </dependency>
    </dependencies>
</project>


以上配置中,由于 import 依賴(lài)范圍的特殊性,一般都是指向打包類(lèi)型為 pom 的模塊,所以 type 元素的值一般為 pom。

若存在多個(gè)模塊,它們使用的依賴(lài)版本都是一致的,則就可以定義一個(gè)使用 dependencyManagement 專(zhuān)門(mén)管理依賴(lài)的 POM,然后在各個(gè)模塊中導(dǎo)入這些依賴(lài)管理配置。

到此這篇關(guān)于Maven dependencyManagement元素標(biāo)簽的具體使用的文章就介紹到這了,更多相關(guān)Maven dependencyManagement內(nèi)容請(qǐng)搜索腳本之家以前的文章或繼續(xù)瀏覽下面的相關(guān)文章希望大家以后多多支持腳本之家!

相關(guān)文章

  • Java使用poi-tl設(shè)置word圖片環(huán)繞方式為浮于在文字上方

    Java使用poi-tl設(shè)置word圖片環(huán)繞方式為浮于在文字上方

    POI-TL 是一個(gè)基于 Apache POI 的 Java 庫(kù),專(zhuān)注于在 Microsoft Word 文檔(.docx 格式)中進(jìn)行模板填充和動(dòng)態(tài)內(nèi)容生成,下面我們看看如何使用poi-tl設(shè)置word圖片環(huán)繞方式為浮于在文字上方吧
    2025-03-03
  • JAVA各種OOM代碼示例與解決方法

    JAVA各種OOM代碼示例與解決方法

    這篇文章主要給大家介紹了關(guān)于JAVA各種OOM代碼示例與解決方法的相關(guān)資料,文中通過(guò)示例代碼以及圖文介紹的非常詳細(xì),對(duì)大家學(xué)習(xí)或者使用java具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友們下面來(lái)一起學(xué)習(xí)學(xué)習(xí)吧
    2020-07-07
  • Java常用類(lèi)之System類(lèi)的使用指南

    Java常用類(lèi)之System類(lèi)的使用指南

    System類(lèi)代表系統(tǒng),系統(tǒng)級(jí)的很多屬性和控制方法都放置在該類(lèi)的內(nèi)部。該類(lèi)位于java.lang包。本文將通過(guò)示例為大家詳細(xì)講講System類(lèi)的使用,需要的可以參考一下
    2022-07-07
  • springMVC 用戶(hù)登錄權(quán)限驗(yàn)證實(shí)現(xiàn)過(guò)程解析

    springMVC 用戶(hù)登錄權(quán)限驗(yàn)證實(shí)現(xiàn)過(guò)程解析

    這篇文章主要介紹了springMVC 用戶(hù)登錄權(quán)限驗(yàn)證實(shí)現(xiàn)過(guò)程解析,文中通過(guò)示例代碼介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友可以參考下
    2019-11-11
  • springboot JPA?CriteriaBuilder?如何獲取指定字段

    springboot JPA?CriteriaBuilder?如何獲取指定字段

    這篇文章主要介紹了springboot JPA CriteriaBuilder如何獲取指定字段,具有很好的參考價(jià)值,希望對(duì)大家有所幫助,如有錯(cuò)誤或未考慮完全的地方,望不吝賜教
    2021-12-12
  • java開(kāi)發(fā)BeanUtils類(lèi)解決實(shí)體對(duì)象間賦值

    java開(kāi)發(fā)BeanUtils類(lèi)解決實(shí)體對(duì)象間賦值

    這篇文章主要為大家介紹了java開(kāi)發(fā)中使用BeanUtils類(lèi)實(shí)現(xiàn)實(shí)體對(duì)象之間的賦值有需要的朋友可以借鑒參考下,希望能夠有所幫助,祝大家多多進(jìn)步學(xué)有所得
    2021-10-10
  • HashMap 和 Hashtable的區(qū)別

    HashMap 和 Hashtable的區(qū)別

    本文主要介紹HashMap 和 Hashtable的區(qū)別,這里整理了相關(guān)資料并詳細(xì)介紹了HashMap 和 Hashtable的區(qū)別及其工作原理和使用方法,有需要的朋友可以看一下
    2016-09-09
  • 使用BufferedReader讀取本地文件的操作

    使用BufferedReader讀取本地文件的操作

    這篇文章主要介紹了使用BufferedReader讀取本地文件的操作,具有很好的參考價(jià)值,希望對(duì)大家有所幫助。
    2021-07-07
  • springboot如何解決跨域后session獲取不到sessionId不一致

    springboot如何解決跨域后session獲取不到sessionId不一致

    這篇文章主要介紹了springboot如何解決跨域后session獲取不到sessionId不一致問(wèn)題,具有很好的參考價(jià)值,希望對(duì)大家有所幫助,如有錯(cuò)誤或未考慮完全的地方,望不吝賜教
    2024-01-01
  • Java中關(guān)于優(yōu)先隊(duì)列PriorityQueue的使用及相關(guān)方法

    Java中關(guān)于優(yōu)先隊(duì)列PriorityQueue的使用及相關(guān)方法

    這篇文章主要介紹了Java中關(guān)于優(yōu)先隊(duì)列PriorityQueue的使用及相關(guān)方法,具有很好的參考價(jià)值,希望對(duì)大家有所幫助,如有錯(cuò)誤或未考慮完全的地方,望不吝賜教
    2023-08-08

最新評(píng)論

临高县| 南靖县| 眉山市| 祥云县| 白河县| 专栏| 阿鲁科尔沁旗| 岑溪市| 黎川县| 安康市| 衡阳市| 雷波县| 卫辉市| 林甸县| 资兴市| 辛集市| 通城县| 安岳县| 乌兰察布市| 东港市| 彰武县| 麻城市| 册亨县| 石首市| 贵港市| 宣化县| 沂南县| 蓝田县| 颍上县| 满洲里市| 怀安县| 体育| 平陆县| 留坝县| 富民县| 当阳市| 东乌珠穆沁旗| 阿拉尔市| 类乌齐县| 元谋县| 普宁市|