Maven中dependencyManagement作用說明
阿新 • • 發佈:2019-02-18
備註:今天有好些實習的同事問到Maven中關於dependencyManagement和普通dependencies的區別,說多了,麻煩,記錄一下、
在Maven多模組的時候,管理依賴關係是非常重要的,各種依賴包衝突,查詢問題起來非常複雜,於是就用到了<dependencyManagement>,
示例說明,
在父模組中:
那麼在子模組中只需要<groupId>和<artifactId>即可,如:<dependencyManagement> <dependencies> <dependency> <groupId>mysql</groupId> <artifactId>mysql-connector-java</artifactId> <version>5.1.44</version> </dependency> </dependencies> </dependencyManagement>
<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版本。