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

Maven依賴(lài)管理之parent與dependencyManagement深入分析

 更新時(shí)間:2022年10月18日 10:08:46   作者:thinkpading  
首先我們來(lái)說(shuō)說(shuō)parent標(biāo)簽,其實(shí)這個(gè)不難解釋?zhuān)褪歉傅囊馑?,pom也有繼承的。比方說(shuō)我現(xiàn)在有A,B,C,A是B,C的父級(jí)?,F(xiàn)在就是有一個(gè)情況B,C其實(shí)有很多jar都是共同的,其實(shí)是可以放在父項(xiàng)目里面,這樣,讓B,C都繼承A就方便管理了

一、parent依賴(lài)管理

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

舉例:

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

二、dependencyManagement 依賴(lài)管理

作用:父子項(xiàng)目依賴(lài)的版本管理。

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

需要注意的是:

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

三、實(shí)例分析

單一模塊情況

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

多模塊情況

父模塊 pom.xml

<!--parent-module父模塊pom.xml-->
<properties>
    <!--統(tǒng)一管理jar包版本。集中在父模塊properties標(biāo)簽中定義所有依賴(lài)的版本號(hà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>  
    <!--定義公共依賴(lài)的版本號(hào)-->
    <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-->
<!--繼承父類(lèi)-->  
<parent>
    <!--聲明父類(lèi)的身份信息-->
    <artifactId>parent-module</artifactId>
    <groupId>com.ppd</groupId>  
    <version>0.0.1-SNAPSHOT</version> 
    <!--聲明父類(lèi)的pom文件路徑-->
    <relativePath>../parent-module/pom.xml</relativePath>
</parent>  
<modelVersion>4.0.0</modelVersion>  
<artifactId>son-module</artifactId>  
<packaging>ejb</packaging>  
<!--依賴(lài)關(guān)系-->  
<dependencies>  
    <dependency>  
        <groupId>javax</groupId>  
        <artifactId>javaee-api</artifactId>
        <!--未聲明則繼承父類(lèi)version、scope-->
    </dependency>  
    <dependency>  
        <groupId>com.fasterxml.jackson.core</groupId>  
        <artifactId>jackson-annotations</artifactId>
        <!--聲明則不繼承父類(lèi)version-->
        <version>1.8<version/>
        <!--繼承父類(lèi)scope-->
    </dependency>  
    <dependency>  
        <groupId>org.eclipse.persistence</groupId>  
        <artifactId>org.eclipse.persistence.jpa</artifactId>
        <!--未聲明則繼承父類(lèi)version-->
        <scope>provided</scope>
    </dependency>  
</dependencies>

四、properties標(biāo)簽

作用:在pom.xml中的properties標(biāo)簽下聲明相應(yīng)的版本信息,然后在dependency下引用的時(shí)候用${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依賴(lài)管理之parent與dependencyManagement深入分析的文章就介紹到這了,更多相關(guān)Maven parent與dependencyManagement內(nèi)容請(qǐng)搜索腳本之家以前的文章或繼續(xù)瀏覽下面的相關(guān)文章希望大家以后多多支持腳本之家!

相關(guān)文章

  • JVM進(jìn)階教程之字段訪(fǎng)問(wèn)優(yōu)化淺析

    JVM進(jìn)階教程之字段訪(fǎng)問(wèn)優(yōu)化淺析

    這篇文章主要給大家介紹了關(guān)于JVM進(jìn)階教程之字段訪(fǎng)問(wèn)優(yōu)化的相關(guān)資料,文中通過(guò)示例代碼介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友們下面隨著小編來(lái)一起學(xué)習(xí)學(xué)習(xí)吧
    2019-01-01
  • springmvc級(jí)聯(lián)屬性處理無(wú)法轉(zhuǎn)換異常問(wèn)題解決

    springmvc級(jí)聯(lián)屬性處理無(wú)法轉(zhuǎn)換異常問(wèn)題解決

    這篇文章主要介紹了springmvc級(jí)聯(lián)屬性處理無(wú)法轉(zhuǎn)換異常問(wèn)題解決,文中通過(guò)示例代碼介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友可以參考下
    2019-12-12
  • 初識(shí)Java8中的Stream

    初識(shí)Java8中的Stream

    lambda表達(dá)式是stream的基礎(chǔ),接下來(lái)通過(guò)實(shí)例代碼給大家詳細(xì)介紹java8中的stream,感興趣的朋友一起看看吧
    2017-08-08
  • 通過(guò)java字節(jié)碼分析學(xué)習(xí)對(duì)象初始化順序

    通過(guò)java字節(jié)碼分析學(xué)習(xí)對(duì)象初始化順序

    今天用了jmock對(duì)進(jìn)行單元測(cè)試編碼,發(fā)現(xiàn)一個(gè)比較奇怪的語(yǔ)法,static使用方法,見(jiàn)下面例子
    2013-11-11
  • Spring AOP之@Around,@AfterReturning使用、切不進(jìn)去的解決方案

    Spring AOP之@Around,@AfterReturning使用、切不進(jìn)去的解決方案

    這篇文章主要介紹了Spring AOP之@Around,@AfterReturning使用、切不進(jìn)去的解決方案,具有很好的參考價(jià)值,希望對(duì)大家有所幫助,如有錯(cuò)誤或未考慮完全的地方,望不吝賜教
    2024-05-05
  • springboot 場(chǎng)景啟動(dòng)器使用解析

    springboot 場(chǎng)景啟動(dòng)器使用解析

    這篇文章主要介紹了springboot 場(chǎng)景啟動(dòng)器使用解析,文中通過(guò)示例代碼介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友可以參考下
    2020-02-02
  • SpringBoot處理 CORS 跨域的方法詳解

    SpringBoot處理 CORS 跨域的方法詳解

    Springboot跨域問(wèn)題,是當(dāng)前主流web開(kāi)發(fā)人員都繞不開(kāi)的難題,CORS是一個(gè)W3C標(biāo)準(zhǔn),全稱(chēng)是”跨域資源共享”,本文將給大家詳細(xì)介紹SpringBoot 如何處理 CORS 跨域,感興趣的同學(xué)跟著小編一起來(lái)看看吧
    2023-07-07
  • 如何利用Spring把元素解析成BeanDefinition對(duì)象

    如何利用Spring把元素解析成BeanDefinition對(duì)象

    這篇文章主要介紹了如何利用Spring把元素解析成BeanDefinition對(duì)象,文章圍繞主題展開(kāi)詳細(xì)的內(nèi)容介紹,具有一定的參考價(jià)值,需要的小伙伴可以參考一下
    2022-08-08
  • spring-boot react如何一步一步實(shí)現(xiàn)增刪改查

    spring-boot react如何一步一步實(shí)現(xiàn)增刪改查

    這篇文章主要介紹了spring-boot react如何一步一步實(shí)現(xiàn)增刪改查,小編覺(jué)得挺不錯(cuò)的,現(xiàn)在分享給大家,也給大家做個(gè)參考。一起跟隨小編過(guò)來(lái)看看吧
    2018-11-11
  • Java使用線(xiàn)程池實(shí)現(xiàn)socket編程的方法詳解

    Java使用線(xiàn)程池實(shí)現(xiàn)socket編程的方法詳解

    這篇文章主要為大家詳細(xì)介紹了Java使用線(xiàn)程池實(shí)現(xiàn)socket編程的方法,文中示例代碼介紹的非常詳細(xì),具有一定的參考價(jià)值,感興趣的小伙伴們可以參考一下,希望能夠給你帶來(lái)幫助
    2022-03-03

最新評(píng)論