maven项目中dependency和dependenciesManagement的区别
标签: maven pom dependencies dependenciesManage 依赖
2017年09月20日 21:40:33 421人阅读 评论(0) 收藏 举报
<dependencyManagement>
<!--spring的核心包-->
<dependencies>
<dependency>
<groupId>org.springframework</groupId>
<artifactId>spring-core</artifactId>
<version>${spring-version}</version>
</dependency>
<dependency>
<groupId>org.springframework</groupId>
<artifactId>spring-content</artifactId>
<version>${spring-version}</version>
</dependency>
</dependencies> </dependencyManagement>
但是这样就行测试的时候,注解是不能正确导包的,仔细找了好久,发现并没有所要依赖的spring的jar包在里面,所以没有注解是很正常的存在了..
后来将<dependencyManagement>的标签拿掉,直接依赖的时候,就看到了eclipse中的buildworkspace在build,证明一点我们的操作是有效果的,是在执行操作的.而且刚刚报红的注解都已经好了...可算是度过了一关
总结:
dependencyManagement其实只是一个管理jar的作用的声明标签,是管理jar的版本的,其他他的什么作用都没有,只是定义找到该jar的三维坐标,并不是真正的去执行下载的jar的功能.
但是jar的版本声明是有两种方式的,
1,在dependencies中的依赖中如果没有声明jar的版本,就到dependenciesManagement中去找,找到就使用,没有就报错
2,在dependencies中声明jar的版本,则使用该版本,不管在dependenciesManagement中有没有声明jar的version,都以该jar的版本为主.
其实还有一个知识点,是比较绕人的,但是也是个大坑,
我们在项目中需要引入一个框架S的jar包,S.jar.而S框架的开发者为了实现S框架又在pom中引入H框架,如果我们在项目中也使用了H框架,那么H框架的版本是什么呢?此时就是dependenciesManagement的作用,不管怎样,在dependenciesManagement中只要有版本号的声明,就使用dependenciesManagement中的版本,就是这么简单粗暴!!!