您的位置:首页 > 其它

maven依赖管理

2015-11-17 16:15 211 查看
建三个项目,Parent作为父项目、test1、test2作为子项目。

在父项目Parent中依赖项如下:

<dependencies>

<dependency>

<groupId>junit</groupId>

<artifactId>junit</artifactId>

<version>4.8.1</version>

<scope>test</scope>

</dependency>

</dependencies>

在子项目test1、test2中没有写任何依赖,在test1下运行命令 mvn help:effective-pom,会发现test1下面有 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>

子项目test1、test2下面还是没有任何依赖项,在test1下运行命令 mvn help:effective-pom,会发现test1下面 没有 junit 4.8.1的依赖。

如果我在test1 下添加junit的依赖:

<dependencies>

<dependency>

<groupId>junit</groupId>

<artifactId>junit</artifactId>

</dependency>

</dependencies>

再在test1下运行命令 mvn help:effective-pom,会发现test1下面有了 junit 4.8.1的依赖,并且scope为 test。

那么经过验证,scope写在子项目中的<dependencies> 下的<dependency>中,或是写在父项目中的<dependencyManagement>中,都是可以的。

dependencies 和 dependencyManagement 的区别在于:
dependencies :即使在子项目中不写该依赖项,那么子项目仍然会从父项目中继承该依赖项。
dependencyManagement :如果在子项目中不写该依赖项,那么子项目中是不会从父项目继承该依赖项的;只有在子项目中写了该依赖项,才会从父项目中继承该项,并且version 和 scope 都读取自 父pom。
虽然dependencyManagement 没有减少多少配置信息,但从管理上来说更加规范,在需要精简子项目依赖的时候可以使用。

同理插件管理pluginManagement和dependencyManagement是一样的道理。
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息