Maven中的dependencyManagement和dependencies区别
2015-11-24 17:47
267 查看
在Maven中dependencyManagement的作用其实相当于一个对所依赖jar包进行版本管理的管理器。
在dependencyManagement下申明的dependencies,Maven并不会去实际下载所依赖的jar包,而是
在dependencyManagement中用一个Map记录了jar的三维坐标。
而被仅仅是被dependencies包裹的元素,Maven是会去仓库实际下载所需要的jar包的,而至于需要下载什么
版本的jar包就有两种判断途径:
1:如果dependencies里的dependency自己没有声明version元素,那么maven就
会倒dependencyManagement里面去找有没有对该artifactId和groupId进行过版本声明,如果有,就继承它,如果
没有就会报错,告诉你必须为dependency声明一个version
2:如果dependencies中的dependency声明了version,那么无论dependencyManagement中有无对该jar的version声明,都以dependency里的version为准。
比如我们在项目中需要引入一个框架A的jar包:a.jar。而A框架的作者为了实现A框架又在其pom里面引入了spring框架,那么问题就来了,如果我们的项目也要用到spring框架,那spring框架的版本应该以谁的为准呢?
这可能就是dependencyManagement的作用了,你可以在dependencyManagement中对spring进行版本声明,然后你在dependencies中添加对A框架的引用,那么实际引入的spring版本就是你在dependencyManagement中声明的版本了。
在dependencyManagement下申明的dependencies,Maven并不会去实际下载所依赖的jar包,而是
在dependencyManagement中用一个Map记录了jar的三维坐标。
而被仅仅是被dependencies包裹的元素,Maven是会去仓库实际下载所需要的jar包的,而至于需要下载什么
版本的jar包就有两种判断途径:
1:如果dependencies里的dependency自己没有声明version元素,那么maven就
会倒dependencyManagement里面去找有没有对该artifactId和groupId进行过版本声明,如果有,就继承它,如果
没有就会报错,告诉你必须为dependency声明一个version
2:如果dependencies中的dependency声明了version,那么无论dependencyManagement中有无对该jar的version声明,都以dependency里的version为准。
pom.xml //只是对版本进行管理,不会实际引入jar <dependencyManagement> <dependencies> <dependency> <groupId>org.springframework</groupId> <artifactId>spring-core</artifactId> <version>3.2.7</version> </dependency> </dependencies> </dependencyManagement> //会实际下载jar包 <dependencies> <dependency> <groupId>org.springframework</groupId> <artifactId>spring-core</artifactId> </dependency> </dependencies>可以看到dependecies元素下的dependency里并没有声明版本,这是因为在manager中已经将版本管理起来了。
比如我们在项目中需要引入一个框架A的jar包:a.jar。而A框架的作者为了实现A框架又在其pom里面引入了spring框架,那么问题就来了,如果我们的项目也要用到spring框架,那spring框架的版本应该以谁的为准呢?
这可能就是dependencyManagement的作用了,你可以在dependencyManagement中对spring进行版本声明,然后你在dependencies中添加对A框架的引用,那么实际引入的spring版本就是你在dependencyManagement中声明的版本了。
相关文章推荐
- AngularJS控制器controller如何通信?
- 多线程问题
- VisualStudio 调试Linux
- 数据结构和算法之图---图的遍历之深度搜索dfs
- Lua5.1中的API函数
- linux下安装jdk和tomcat
- 如何用原生PHP GET到一个数组
- Android获取相册中图片的路径 4.4版本前后的变化
- PMAC上位机编程基础2---上位机发送指令
- android 实现滑动切换activity
- 多个图片循环播放的进度条
- java synchronized详解
- 笔记索引
- Onboard,迷人的引导页样式制作库
- smarty获取session值
- yii2 的 restful 接口书写自定义方法
- 151126xcode各版本下载地址
- js设置时分秒插件
- 一个好的产品
- jquery select取值,赋值操作