博客园  :: 首页  :: 新随笔  :: 联系 :: 订阅 订阅  :: 管理

Maven间接依赖冲突解决办法

Posted on 2013-11-20 16:55  Mr.Victor  阅读(3758)  评论(0编辑  收藏  举报

如果项目中maven依赖太多,由于还有jar之间的间接依赖,所以可能会存在依赖冲突。依赖冲突大部分都是由于版本冲突引起的,查看maven的依赖关系,可以找到引起冲突的间接依赖

 

如上图,通过Dependency Hierachy可以查看到间接依赖,这里slf4j-api与其他引用的版本有冲突,我们可以exclude禁用这个间接依赖,代码如下:

 1 <dependency>
 2     <groupId>displaytag</groupId>
 3     <artifactId>displaytag</artifactId>
 4     <version>1.2</version>
 5     <exclusions>
 6         <exclusion>
 7             <groupId>org.slf4j</groupId>
 8             <artifactId>jcl104-over-slf4j</artifactId>
 9         </exclusion>
10         <exclusion>
11             <groupId>org.slf4j</groupId>
12             <artifactId>slf4j-log4j12</artifactId>
13         </exclusion>
14     </exclusions>
15 </dependency>

这里禁用了displaytag间接引用的两个依赖,被禁用的依赖如果没有被其他依赖引用,可以手动引入。

这样就解决了maven依赖冲突的问题。

 

PS: 对于有的依赖,简单的通过groupId artifactId和version无法从maven中央仓库下载,由于这些jar依赖不同的jdk,所以要加上classifier,如下:

<dependency>
    <groupId>net.sf.json-lib</groupId>
    <artifactId>json-lib</artifactId>
    <version>2.4</version>
    <classifier>jdk15</classifier>
</dependency>