dependencyManagement、parent與dependencies


本文總結自:https://www.cnblogs.com/feibazhf/p/7886617.html

 

當我們的項目很多時,為了適應子項目的依賴項使用統一的版本,我們可以創建一個parent項目來管理子項目的公共的依賴。

 

parent項目根據dependencyManagement來定義各個依賴項的版本

例如:

<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>

 

子項目通過parent繼承父項目

<parent>  
        <artifactId>itoo-base-parent</artifactId>  
        <groupId>com.tgb</groupId>  
        <version>0.0.1-SNAPSHOT</version>  
        <relativePath>../itoo-base-parent/pom.xml</relativePath>  
</parent>

接下來子項目的dependency就能不標明版本號,而使用父項目的版本

<dependencies>  
        <dependency>  
            <groupId>javax</groupId>  
            <artifactId>javaee-api</artifactId>  
        </dependency>  
          
        <dependency>  
            <groupId>com.fasterxml.jackson.core</groupId>  
            <artifactId>jackson-annotations</artifactId>  
        </dependency>  
          
        <dependency>  
            <groupId>org.eclipse.persistence</groupId>  
            <artifactId>org.eclipse.persistence.jpa</artifactId>  
            <scope>provided</scope>  
        </dependency>  
    </dependencies>  

-------------------------------------------------------------------------------------

 

重點:

如果不寫dependencyManagement,即沒有用dependencyManagement包裹dependencies對於dependencies內的依賴項,子項目中即使沒有明確地寫,仍然會從父項目中繼承該依賴項(全部繼承)。

而如果加上了,

dependencyManagement里只是聲明依賴,並不實現引入,因此子項目需要顯示的聲明需要用的依賴。如果不在子項目中聲明依賴,是不會從父項目中繼承下來的;只有在子項目中寫了該依賴項,並且沒有指定具體版本,才會從父項目中繼承該項,(寫了版本號相當於覆蓋),並且versionscope都讀取自父pom。


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM