maven中的 dependencies 和 dependencyManagement 的区别(六)

转载 2012年03月30日 13:30:27

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

 

 

pluginManagement和plugins的区别同dependencyManagement和dependencies

Maven之——依赖与插件管理

摘要: 掌握如何在项目中使用聚合继承、以及如何使用这一特性来管理、优化依赖与插件的使用。...
  • chenghuaying
  • chenghuaying
  • 2014年11月08日 19:12
  • 4341

maven项目 没有或移除Maven Dependencies后怎么在添加进去(转载)

maven项目 没有或移除Maven Dependencies后如何在添加进去 碰到了这样的一个问题:svn下载maven工程时,该工程没有Maven Dependencies。就是红线的东...
  • w343033751
  • w343033751
  • 2016年08月02日 17:34
  • 5637

Maven详解之聚合与继承

Maven的聚合与继承,如何在项目中正确的使用聚合与继承,来提高项目的可读性和可用性。如何做到项目的依赖管理和插件的正确管理?...
  • wanghantong
  • wanghantong
  • 2014年08月07日 23:06
  • 62218

maven 中 pom.xml 配置文件标签说明,dependencyManagement和dependencies区别

maven 中 pom.xml 配置文件标签说明,dependencyManagement和dependencies区别
  • u011314442
  • u011314442
  • 2016年09月03日 19:06
  • 3243

Maven中<dependencies>节点和<dependencyManagement>节点的区别

以前一直没有在意,今天建立maven工程的时候在节点下加入了junit依赖,结果在dependency Graph中没有发现junit的依赖关系,怎么回事?没有加入项目依赖?遂google之  ...
  • luckarecs
  • luckarecs
  • 2011年12月06日 16:59
  • 555

maven中的 dependencies 和 dependencyManagement 的区别

今天我在配置 sellercenter 的接口测试环境的时候,发现一些依赖的写法不太一致: 比如有的依赖的是写在子项目中的 下的 标签中, 而有的依赖的是写在父项目中的 中 。 我知道前一种写...
  • luenxin
  • luenxin
  • 2015年11月26日 22:48
  • 439

maven工程<dependencyManagement>与<dependencies>区别

Maven 使用dependencyManagement 元素来提供了一种管理依赖版本号的方式。通常会在一个组织或者项目的最顶层的父POM 中看到dependencyManagement 元素。使用p...
  • normol
  • normol
  • 2017年07月12日 07:16
  • 290

Maven中dependencies与dependencyManagement的区别

1、DepencyManagement应用场景          当我们的项目模块很多的时候,我们使用Maven管理项目非常方便,帮助我们管理构建、文档、报告、依赖、scms、发布、分发的方法。...
  • jeffleo
  • jeffleo
  • 2017年04月30日 15:52
  • 238

Maven的pom.xml文件结构之基本配置dependencies和dependencyManagement

1.Maven项目的dependencies Maven项目的构建往往要依赖于第三方的类库。通过可以给出Maven项目所依赖的第三方类库,示例如下: junit ...
  • taiyangdao
  • taiyangdao
  • 2016年08月30日 00:09
  • 5592

maven中DependencyManagement和Dependencies

maven中DependencyManagement和Dependencies
  • keda8997110
  • keda8997110
  • 2014年04月05日 19:40
  • 12392
内容举报
返回顶部
收藏助手
不良信息举报
您举报文章:maven中的 dependencies 和 dependencyManagement 的区别(六)
举报原因:
原因补充:

(最多只允许输入30个字)