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

相关文章
相关标签/搜索