今天我在配置 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

最新文章

  1. Node.js之路【第三篇】NodeJS异步实现
  2. windows7实现打印机共享的方法
  3. laravel5 centos6.4下的配置体验
  4. 【STL源码学习】STL算法学习之一
  5. 一步一步写一个简单通用的makefile(四)--写一个通用的makefile编译android可执行文件
  6. python之列表、字典的使用
  7. .NET 绝对路径的配置
  8. R学习笔记(4): 使用外部数据
  9. openfire彻底卸载的方法
  10. 如何快速连接无线Wifi 使用二维码
  11. sqlserver 日志查询
  12. 安卓preview不显示的问题
  13. Luogu P4427 [BJOI2018]求和
  14. Oracle12c 性能优化攻略:攻略目录表
  15. 网络爬虫之scrapy爬取某招聘网手机APP发布信息
  16. MongoDB--关于数据库及选择MongoDB的原因
  17. Python 字符串操作函数一
  18. Jmeter响应数据为乱码的处理
  19. Java从零开始学八(循环结构)
  20. Luogu 4491 [HAOI2018]染色

热门文章

  1. IOS 支付宝-五福简单框架实现-线性滚动(UICollectionView)
  2. OC语言-08-深拷贝与浅拷贝详解(示例)
  3. tomcat下部署润乾报表
  4. JS中的bind方法学习
  5. 使用sysbench进行压力测试
  6. 浅谈Python时间模块
  7. emacs下安装pip
  8. CGI(通用网关接口)
  9. HDU 3374 String Problem (KMP+最大最小表示)
  10. DW与DM