Maven对有冲突的jar包,采用最短路径、最先声明两种原则来解决。
这样一来, 我们是不是将只管写上pom.xml文件的节点的内容,其他jar包的冲突等maven自动处理?
maven会控制版本的你只需要在版本生命的地方写上版本号就行了
也有会产生冲突的时候
Maven的依赖仲裁优先级
路径优先:1.对于该项目而言,根据jar包的依赖路径,短的优先
声明优先:2.路径一样,被依赖者声明的前后有关,同一个pom,前面的优先
覆写优先:3.子pom优先于父pom
http://blog.csdn.net/haiyuntai/article/details/53411746
重复引用了一样会冲突,或者引用了多个版本。
maven会控制版本的你只需要在版本生命的地方写上版本号就行了 好像这样
看怎么管理maven中的jar包了:
对于依赖,请遵循如下原则:
路径优先,简单来说,假设第一种的路径深度是3,第二种的路径深度是4,那么maven会采用路径深度为3的依赖关系;
假设两者的路径的深度一样,那么声明在前面的会被优先采用
对于jar包的管理有如下两种:
版本锁定,使用dependencyManagement对所依赖jar包进行版本管理的管理器,如果dependencies里的dependency没有声明
version元素,那么maven会到dependencyManagement里面去找是否对artifactId和groupId进行声明,若有,就继承此版本,若
无就会报错,必须声明一个version;如果dependencies中的dependency声明了version,那么无论dependencyManagement中
是否对该jar的version声明,皆以dependency里的version为准。
排除依赖,就是存在两个或多个相同jar包的情况,存在版本冲突的情形,会导致某些操作失效(比如:openSessionInView失效),
故需排除低版本的jar包:
在version后面加如下例子:
1. <exclusions>
2. <exclusion>
3. <groupId>org.springframework</groupId>
4. <artifactId>spring-beans</artifactId>
5. </exclusion>
6. </exclusions>
添加后,此版本的jar包会消失。
会有冲突的,比如一个jar包你下了2个版本的。
一般是不会的,但是如果你配置了pom文件有问题的话,这个是一定问题的,它只是默认的,最好的集成方案,但是主要是看配置文件的,