maven中的 dependencies 和 dependencyManagement 的区别
今天我在配置 sellercenter 的接口测试环境的时候,发现一些依赖的写法不太一致:
比如有的依赖的<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。
转自:http://blog.sina.com.cn/s/blog_6125fe5d0100zxrz.html
最新文章
- Node.js之路【第三篇】NodeJS异步实现
- windows7实现打印机共享的方法
- laravel5 centos6.4下的配置体验
- 【STL源码学习】STL算法学习之一
- 一步一步写一个简单通用的makefile(四)--写一个通用的makefile编译android可执行文件
- python之列表、字典的使用
- .NET 绝对路径的配置
- R学习笔记(4): 使用外部数据
- openfire彻底卸载的方法
- 如何快速连接无线Wifi 使用二维码
- sqlserver 日志查询
- 安卓preview不显示的问题
- Luogu P4427 [BJOI2018]求和
- Oracle12c 性能优化攻略:攻略目录表
- 网络爬虫之scrapy爬取某招聘网手机APP发布信息
- MongoDB--关于数据库及选择MongoDB的原因
- Python 字符串操作函数一
- Jmeter响应数据为乱码的处理
- Java从零开始学八(循环结构)
- Luogu 4491 [HAOI2018]染色