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

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

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

一、parent依賴管理

作用:定位父項目的坐標標簽,子項目可以直接繼承父項目的依賴包,實現(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標簽能讓所有子項目在引用一個依賴時不必列出版本號。這樣子項目中該依賴的版本號將使用父項目pom文件中該依賴的版本。
  • 子項目中的某依賴沒有指定版本號時,maven會沿著父子層次向上走,直到找到一個擁有dependencyManagement元素的項目,然后它就會使用這個dependencyManagement元素中指定的版本。
  • 這樣的好處就是: 如果有多個子項目都引用同一樣依賴,則可以避免在每個使用的子項目里都聲明一個版本號,這樣當想升級或者切換到另一個版本時,只需要在頂層父容器里更新,而不需要一個一個子項目的修改;另外如果某個子項目需要另一個版本,只需要自己pom中聲明版本號即可。

需要注意的是:

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

三、實例分析

單一模塊情況

<!--只是對版本號進行管理,不會實際引入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 標簽,則會繼承dependencyManagement-->
       </dependency>  
</dependencies>

多模塊情況

父模塊 pom.xml

<!--parent-module父模塊pom.xml-->
<properties>
    <!--統(tǒng)一管理jar包版本。集中在父模塊properties標簽中定義所有依賴的版本號。-->
    <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>  
<!--依賴關系-->  
<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標簽

作用:在pom.xml中的properties標簽下聲明相應的版本信息,然后在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>

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

相關文章

  • JVM進階教程之字段訪問優(yōu)化淺析

    JVM進階教程之字段訪問優(yōu)化淺析

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

    springmvc級聯(lián)屬性處理無法轉換異常問題解決

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

    初識Java8中的Stream

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

    通過java字節(jié)碼分析學習對象初始化順序

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

    Spring AOP之@Around,@AfterReturning使用、切不進去的解決方案

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

    springboot 場景啟動器使用解析

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

    SpringBoot處理 CORS 跨域的方法詳解

    Springboot跨域問題,是當前主流web開發(fā)人員都繞不開的難題,CORS是一個W3C標準,全稱是”跨域資源共享”,本文將給大家詳細介紹SpringBoot 如何處理 CORS 跨域,感興趣的同學跟著小編一起來看看吧
    2023-07-07
  • 如何利用Spring把元素解析成BeanDefinition對象

    如何利用Spring把元素解析成BeanDefinition對象

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

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

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

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

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

最新評論