好比有的依赖的<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