maven的依賴管理

AdelineGDEU 8年前發布 | 8K 次閱讀 Maven 項目構建

來自: http://my.oschina.net/u/2357525/blog/614751


 

比如有的依賴的<scope>是寫在子項目中的 <dependencies> 下的<dependency> 標簽中,

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

 

把驗證過程給大家說下,大家也可以自己練手。

首先新建三個項目,Parent作為父項目、projectA、projectB作為子項目。

在父項目Parent中依賴項如下:

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

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

如果我把 父項目Parent 中的依賴修改如下:

 <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的依賴。

如果我在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

 

 本文由用戶 AdelineGDEU 自行上傳分享,僅供網友學習交流。所有權歸原作者,若您的權利被侵害,請聯系管理員。
 轉載本站原創文章,請注明出處,并保留原始鏈接、圖片水印。
 本站是一個以用戶分享為主的開源技術平臺,歡迎各類分享!