1. 程式人生 > >Maven中dependencyManagement作用說明

Maven中dependencyManagement作用說明

備註今天有好些實習的同事問到Maven中關於dependencyManagement和普通dependencies的區別,說多了,麻煩,記錄一下、

在Maven多模組的時候,管理依賴關係是非常重要的,各種依賴包衝突,查詢問題起來非常複雜,於是就用到了<dependencyManagement>,

示例說明,

在父模組中:

<dependencyManagement>
        <dependencies>
            <dependency>
                <groupId>mysql</groupId>
                <artifactId>mysql-connector-java</artifactId>
                <version>5.1.44</version>
            </dependency>
           
        </dependencies>
</dependencyManagement>
那麼在子模組中只需要<groupId>和<artifactId>即可,如:
 <dependencies>
        <dependency>
            <groupId>mysql</groupId>
            <artifactId>mysql-connector-java</artifactId>
        </dependency>
 </dependencies>

說明:

使用dependencyManagement可以統一管理專案的版本號,確保應用的各個專案的依賴和版本一致,不用每個模組專案都弄一個版本號,不利於管理,當需要變更版本號的時候只需要在父類容器裡更新,不需要任何一個子專案的修改;如果某個子專案需要另外一個特殊的版本號時,只需要在自己的模組dependencies中宣告一個版本號即可。子類就會使用子類宣告的版本號,不繼承於父類版本號。

與dependencies區別:

1)Dependencies相對於dependencyManagement,所有生命在dependencies裡的依賴都會自動引入,並預設被所有的子專案繼承。
2)dependencyManagement裡只是宣告依賴,並不自動實現引入,因此子專案需要顯示的宣告需要用的依賴。如果不在子專案中宣告依賴,是不會從父專案中繼承下來的;只有在子專案中寫了該依賴項,並且沒有指定具體版本,才會從父專案中繼承該項,並且version和scope都讀取自父pom;另外如果子專案中指定了版本號,那麼會使用子專案中指定的jar版本。