maven dependencies中并不会删除
以下方法maven dependencies中并不会删除,可能程序引入的时候,会去掉这种依赖(猜的)
解释:
就是说项目中要用到某一个a.jar包,通过maven引入了之后,也自动的导入了该jar包所依赖的包,这里就会存在一个问题,
如果a.jar包依赖b.jar这个项目的1.0版本,可是我的项目中已经有b.jar这个项目2.0的版本了,这里就会造成冲突,解决的办
法是去除a.jar包依赖b.jar这个项目的1.0版本的依赖关系,让项目使用我已有的包。
最近搭一个springmvc4.x的maven环境,由于要用到webserice,打算整合jersey做,在导入jersey-spring.jar时出现了这样
的问题,我用的是jersey-spring1.81.jar版本,该项目依赖的是spring3,所以把jersey-spring1.81.jar加入maven或就出现了
这样的情况,由于它依赖spring3.x,所以自动导入了spring3.x的jar,并把我spring4.x的包自动删除了,导致spring4.x根本
无法构建,可是我已经有4.x的包,完全不需要它自动导入3的包删除4的包啊
解决版本:
去除jersey-spring1.81.jar原有的依赖,这样就不会自动去导spring3的包了,而是使用我已有的spring4的包,
同理,以后遇到类似的问题也可以这么解决,规则是在要导入的包中加一个去除原有依赖的标签,标签内写想去除的包的id和版本。
贴上解决代码:
---------------------------------------------------------------------------
<dependency> <groupId>com.sun.jersey.contribs</groupId> <artifactId>jersey-spring</artifactId> <version>1.18.1</version> <!-- 去除自带的spring版本 --> <exclusions> <exclusion> <groupId>org.springframework</groupId> <artifactId>spring-aop</artifactId> </exclusion> <exclusion> <groupId>org.springframework</groupId> <artifactId>spring-context</artifactId> </exclusion> <exclusion> <groupId>org.springframework</groupId> <artifactId>spring-beans</artifactId> </exclusion> <exclusion> <groupId>org.springframework</groupId> <artifactId>spring-core</artifactId> </exclusion> <exclusion> <artifactId>spring-web</artifactId> <groupId>org.springframework</groupId> </exclusion> </exclusions> </dependency>
或者参考如下
http://stamen.iteye.com/blog/1554987