maven dependencies dependencyManagement

 

好比有的依賴的<scope>是寫在子項目中的 <dependencies> 下的<dependency> 標籤中,繼承

而有的依賴的<scope>是寫在父項目中的<dependencyManagement> 中 。ci

 

把驗證過程給你們說下,你們也能夠本身練手。it

首先新建三個項目,Parent做爲父項目、projectA、projectB做爲子項目。io

在父項目Parent中依賴項以下:test

<dependencies>
<dependency>
<groupId>junit</groupId>
<artifactId>junit</artifactId>
<version>4.8.1</version>
<scope>test</scope>
</dependency>
</dependencies>plugin

在子項目projectA、projectB中沒有寫任何依賴,在projectA 下運行命令 mvn help:effective-pom,會發現A下面有 junit 4.8.1的依賴。項目

若是我把 父項目Parent 中的依賴修改以下:scope

 <dependencyManagement>
<dependencies>
<dependency>
<groupId>junit</groupId>
<artifactId>junit</artifactId>
<version>4.8.1</version>
<scope>test</scope>
</dependency>
</dependencies>
</dependencyManagement>標籤

子項目ProjectA、projectB下面仍是沒有任何依賴項,在projectA 下運行命令 mvn help:effective-pom,會發現A下面 沒有 junit 4.8.1的依賴。co

若是我在projectA 下添加junit的依賴:

<dependencies>
<dependency>
<groupId>junit</groupId>
<artifactId>junit</artifactId>
</dependency>
</dependencies>

再在projectA 下運行命令 mvn help:effective-pom,會發現A下面有了 junit 4.8.1的依賴,而且scope爲 test。

那麼通過驗證,scope寫在子項目中的<dependencies> 下的<dependency>中,或是寫在父項目中的<dependencyManagement>中,都是能夠的。

但有一點須要注意,dependencies 和 dependencyManagement 的區別在於:

前者,即便在子項目中不寫該依賴項,那麼子項目仍然會從父項目中繼承該依賴項。

後者,若是在子項目中不寫該依賴項,那麼子項目中是不會從父項目繼承該依賴項的;只有在子項目中寫了該依賴項,纔會從父項目中繼承該項,而且version 和 scope 都讀取自 父pom。

 

 

pluginManagement和plugins的區別同dependencyManagement和dependencies

相關文章
相關標籤/搜索