maven中的 dependencies 和 dependencyManagement 的区别 以及scope的取值说明
来源:互联网 发布:java包下载 编辑:程序博客网 时间:2024/06/05 18:57
今天我在配置 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 中的依赖修改如下:
<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。
maven依赖关系中Scope的作用
Dependency Scope
在POM 4中,<dependency>中还引入了<scope>,它主要管理依赖的部署。目前<scope>可以使用5个值:
* compile,缺省值,适用于所有阶段,会随着项目一起发布。
* provided,类似compile,期望JDK、容器或使用者会提供这个依赖。如servlet.jar。
* runtime,只在运行时使用,如JDBC驱动,适用运行和测试阶段。
* test,只在测试时使用,用于编译和运行测试代码。不会随项目发布。
* system,类似provided,需要显式提供包含依赖的jar,Maven不会在Repository中查找它。
- maven中的 dependencies 和 dependencyManagement 的区别 以及scope的取值说明
- maven中的 dependencies 和 dependencyManagement 的区别
- maven中的 dependencies 和 dependencyManagement 的区别
- maven中的 dependencies 和 dependencyManagement 的区别
- maven中的 dependencies 和 dependencyManagement 的区别
- maven中的 dependencies 和 dependencyManagement 的区别
- maven中的dependencies和dependencyManagement的区别
- maven中的 dependencies 和 dependencyManagement 的区别
- maven中的 dependencies 和 dependencyManagement 的区别(六)
- maven中的 dependencies 和 dependencyManagement 的区别(六)
- maven里dependencyManagement和dependencies的区别
- Maven dependencyManagement和dependencies的区别
- Maven dependencyManagement和dependencies的区别
- Maven的Dependencies和dependencyManagement区别
- Maven <dependencies> 和 <dependencyManagement> 的区别
- maven dependencyManagement和dependencies的区别
- maven dependencies和dependencyManagement标签的区别
- maven中dependencyManagement 和dependencies 的区别
- iOS中block的探究
- QT写 读配置文件
- rails模块学习之Controller
- PullToRefresh实现上拉加载下拉刷新
- 将23用二进制进行表示
- maven中的 dependencies 和 dependencyManagement 的区别 以及scope的取值说明
- spi时序的极性和相位
- 计算2个坐标点之间的距离
- spring session redis做session共享
- 关于Button点击两次才响应事件相关问题
- 任意255以内的十进制数转化为16进制数
- 机器学习&深度学习经典资料汇总
- GradleUserGuide中文版 15)文件操作 16)Ant插件
- (屏幕适配)鸿洋大神的Google百分比布局库 android-percent-support-extend