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

Maven依賴管理之parent與dependencyManagement深入分析

 更新時間:2022年10月18日 10:08:46   作者:thinkpading  
首先我們來說說parent標(biāo)簽,其實這個不難解釋,就是父的意思,pom也有繼承的。比方說我現(xiàn)在有A,B,C,A是B,C的父級。現(xiàn)在就是有一個情況B,C其實有很多jar都是共同的,其實是可以放在父項目里面,這樣,讓B,C都繼承A就方便管理了

一、parent依賴管理

作用:定位父項目的坐標(biāo)標(biāo)簽,子項目可以直接繼承父項目的依賴包,實現(xiàn)所有子項目共用相同的依賴包。

舉例:

<parent>
    <groupId>org.springframework.boot</groupId>
    <artifactId>spring-boot-starter-parent</artifactId>
    <version>2.1.4.RELEASE</version>
</parent>

二、dependencyManagement 依賴管理

作用:父子項目依賴的版本管理。

  • 通常會在一個項目的最頂層的父pom中使用dependencyManagement,使用dependencyManagement標(biāo)簽?zāi)茏屗凶禹椖吭谝靡粋€依賴時不必列出版本號。這樣子項目中該依賴的版本號將使用父項目pom文件中該依賴的版本。
  • 子項目中的某依賴沒有指定版本號時,maven會沿著父子層次向上走,直到找到一個擁有dependencyManagement元素的項目,然后它就會使用這個dependencyManagement元素中指定的版本。
  • 這樣的好處就是: 如果有多個子項目都引用同一樣依賴,則可以避免在每個使用的子項目里都聲明一個版本號,這樣當(dāng)想升級或者切換到另一個版本時,只需要在頂層父容器里更新,而不需要一個一個子項目的修改;另外如果某個子項目需要另一個版本,只需要自己pom中聲明版本號即可。

需要注意的是:

  • dependencyManagement只聲明依賴,并不實現(xiàn)引入,因此子項目需要顯示的聲明需要用的依賴,如果不在子項目中聲明依賴,是不會從父項目中繼承下來的。
  • 只有在子項目中寫了該依賴,并且沒有指定具體版本,才會從父項目中繼承該項,并且version和scope都讀取自父pom。
  • 如果子項目中指定了版本號,那么會使用子項目中指定的jar版本。

三、實例分析

單一模塊情況

<!--只是對版本號進(jìn)行管理,不會實際引入jar-->
<dependencyManagement>  
      <dependencies>  
            <dependency>
            		<!--jar包身份限定-->
                <groupId>org.springframework</groupId>
                <artifactId>spring-core</artifactId>  
                <!--版本號的聲明-->
                <version>3.2.7</version>
            </dependency>  
    </dependencies>  
</dependencyManagement>  
<!--會實際下載聲明的依賴jar包-->
<dependencies>  
       <dependency>  
                <groupId>org.springframework</groupId>  
                <artifactId>spring-core</artifactId>
                <!--不聲明version 標(biāo)簽,則會繼承dependencyManagement-->
       </dependency>  
</dependencies>

多模塊情況

父模塊 pom.xml

<!--parent-module父模塊pom.xml-->
<properties>
    <!--統(tǒng)一管理jar包版本。集中在父模塊properties標(biāo)簽中定義所有依賴的版本號。-->
    <project.build.sourceEncoding>UTF-8</project.build.sourceEncoding>
    <org.eclipse.persistence.jpa.version>1.2.6</org.eclipse.persistence.jpa.version>
    <javaee-api.version>1.8</javaee-api.version>
</properties>
<dependencyManagement>  
    <!--定義公共依賴的版本號-->
    <dependencies> 
        <dependency>  
            <groupId>org.eclipse.persistence</groupId>  
            <artifactId>org.eclipse.persistence.jpa</artifactId>  
            <version>${org.eclipse.persistence.jpa.version}</version>  
            <scope>provided</scope>  
        </dependency>  
        <dependency>  
            <groupId>javax</groupId>  
            <artifactId>javaee-api</artifactId>  
            <version>${javaee-api.version}</version>  
        </dependency>  
    </dependencies>  
</dependencyManagement> 

子模塊 pom.xml

<!--son-module子模塊pom.xml-->
<!--繼承父類-->  
<parent>
    <!--聲明父類的身份信息-->
    <artifactId>parent-module</artifactId>
    <groupId>com.ppd</groupId>  
    <version>0.0.1-SNAPSHOT</version> 
    <!--聲明父類的pom文件路徑-->
    <relativePath>../parent-module/pom.xml</relativePath>
</parent>  
<modelVersion>4.0.0</modelVersion>  
<artifactId>son-module</artifactId>  
<packaging>ejb</packaging>  
<!--依賴關(guān)系-->  
<dependencies>  
    <dependency>  
        <groupId>javax</groupId>  
        <artifactId>javaee-api</artifactId>
        <!--未聲明則繼承父類version、scope-->
    </dependency>  
    <dependency>  
        <groupId>com.fasterxml.jackson.core</groupId>  
        <artifactId>jackson-annotations</artifactId>
        <!--聲明則不繼承父類version-->
        <version>1.8<version/>
        <!--繼承父類scope-->
    </dependency>  
    <dependency>  
        <groupId>org.eclipse.persistence</groupId>  
        <artifactId>org.eclipse.persistence.jpa</artifactId>
        <!--未聲明則繼承父類version-->
        <scope>provided</scope>
    </dependency>  
</dependencies>

四、properties標(biāo)簽

作用:在pom.xml中的properties標(biāo)簽下聲明相應(yīng)的版本信息,然后在dependency下引用的時候用${spring-version}就可以引入該版本jar包了。

舉例:

   <properties>
        <spring-version>4.3.7.RELEASE</spring-version>
        <java.version>1.8</java.version>
    </properties>
    <dependencies>
        <dependency>
            <groupId>org.springframework</groupId>
            <artifactId>spring-context</artifactId>
            <version>${spring-version}</version>
        </dependency>
        <dependency>
            <groupId>org.springframework</groupId>
            <artifactId>spring-web</artifactId>
            <version>${spring-version}</version>
        </dependency>
        <dependency>
            <groupId>org.springframework</groupId>
            <artifactId>spring-webmvc</artifactId>
            <version>${spring-version}</version>
        </dependency>
    </dependencies>

到此這篇關(guān)于Maven依賴管理之parent與dependencyManagement深入分析的文章就介紹到這了,更多相關(guān)Maven parent與dependencyManagement內(nèi)容請搜索腳本之家以前的文章或繼續(xù)瀏覽下面的相關(guān)文章希望大家以后多多支持腳本之家!

相關(guān)文章

  • 詳解Spring系列之@ComponentScan批量注冊bean

    詳解Spring系列之@ComponentScan批量注冊bean

    本文介紹各種@ComponentScan批量掃描注冊bean的基本使用以及進(jìn)階用法和@Componet及其衍生注解使用,本文通過實例代碼給大家介紹的非常詳細(xì),對大家的學(xué)習(xí)或工作具有一定的參考借鑒價值,需要的朋友參考下吧
    2022-02-02
  • Java多線程中線程池常見7個參數(shù)的詳解以及執(zhí)行流程

    Java多線程中線程池常見7個參數(shù)的詳解以及執(zhí)行流程

    本文主要介紹了Java多線程中線程池常見7個參數(shù)的詳解以及執(zhí)行流程,文中通過示例代碼介紹的非常詳細(xì),對大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價值,需要的朋友們下面隨著小編來一起學(xué)習(xí)學(xué)習(xí)吧
    2023-07-07
  • Java 數(shù)據(jù)流之Broadcast State

    Java 數(shù)據(jù)流之Broadcast State

    這篇文章主要介紹了Java 數(shù)據(jù)流之Broadcast State,本文給大家介紹的非常詳細(xì),對大家的學(xué)習(xí)或工作具有一定的參考借鑒價值,需要的朋友可以參考下
    2021-09-09
  • 一起因MySQL時間戳精度引發(fā)的血案分析

    一起因MySQL時間戳精度引發(fā)的血案分析

    這篇文章主要給大家介紹了一起因MySQL時間戳精度引發(fā)的血案的相關(guān)資料,文中通過示例代碼介紹的非常詳細(xì),對大家學(xué)習(xí)或者使用MySQL具有一定的參考學(xué)習(xí)價值,需要的朋友們下面來一起學(xué)習(xí)學(xué)習(xí)吧
    2019-09-09
  • VSCode?配置?Spring?Boot?項目開發(fā)環(huán)境的全過程

    VSCode?配置?Spring?Boot?項目開發(fā)環(huán)境的全過程

    兩三年前曾經(jīng)試過配置Java環(huán)境, 存在不少問題作罷. 最近搜了下相關(guān)的文章, 感覺VSCode對Java項目的支持比三年前完善了不少. 今天實際配置了一下環(huán)境, 把自己常用的功能過了一遍, 基本能跑通開發(fā)流程, 做個筆記,需要的朋友可以參考下
    2024-03-03
  • SpringRunner和SpringJUnit4ClassRunner的區(qū)別及說明

    SpringRunner和SpringJUnit4ClassRunner的區(qū)別及說明

    這篇文章主要介紹了SpringRunner和SpringJUnit4ClassRunner的區(qū)別及說明,具有很好的參考價值,希望對大家有所幫助。如有錯誤或未考慮完全的地方,望不吝賜教
    2023-04-04
  • 使用fileupload組件實現(xiàn)文件上傳功能

    使用fileupload組件實現(xiàn)文件上傳功能

    這篇文章主要為大家詳細(xì)介紹了使用fileupload實現(xiàn)文件上傳功能,文中示例代碼介紹的非常詳細(xì),具有一定的參考價值,感興趣的小伙伴們可以參考一下
    2019-10-10
  • SpringBoot集成Druid的實例代碼

    SpringBoot集成Druid的實例代碼

    這篇文章主要介紹了SpringBoot集成Druid的實例代碼,有依賴和配置相關(guān)內(nèi)容,本文通過實例代碼給大家介紹的非常詳細(xì),需要的朋友可以參考下
    2021-12-12
  • JDK動態(tài)代理過程原理及手寫實現(xiàn)詳解

    JDK動態(tài)代理過程原理及手寫實現(xiàn)詳解

    這篇文章主要為大家介紹了JDK動態(tài)代理過程原理及手寫實現(xiàn)詳解,有需要的朋友可以借鑒參考下,希望能夠有所幫助,祝大家多多進(jìn)步,早日升職加薪
    2022-09-09
  • Java數(shù)組,去掉重復(fù)值、增加、刪除數(shù)組元素的方法

    Java數(shù)組,去掉重復(fù)值、增加、刪除數(shù)組元素的方法

    下面小編就為大家?guī)硪黄狫ava數(shù)組,去掉重復(fù)值、增加、刪除數(shù)組元素的方法。小編覺得挺不錯的,現(xiàn)在就分享給大家,也給大家做個參考。一起跟隨小編過來看看吧
    2016-10-10

最新評論

丰台区| 蒙城县| 平邑县| 镇坪县| 东兰县| 林周县| 顺平县| 凤阳县| 宁海县| 通许县| 安化县| 许昌县| 江都市| 珲春市| 营口市| 饶阳县| 乐东| 易门县| 琼结县| 名山县| 鄂州市| 涟水县| 沧州市| 石阡县| 苍山县| 梁河县| 长葛市| 略阳县| 咸宁市| 麻栗坡县| 龙口市| 游戏| 邛崃市| 赣州市| 雷山县| 常山县| 屯门区| 清流县| 泸水县| 陇西县| 兖州市|