解决maven传递依赖中的版本冲突

传递依赖是maven最有特色的、最为方便的优点之一,可以省了很多配置。如a 依赖 b,b 依赖c  默认 a也会依赖 c。但是 也会带来隐患,如版本冲突。当然maven也考虑到解决办法,可以使用exclusions来排除相应的重复依赖。

但是我们还会遇到一个严重的问题,那就是,我怎么知道是哪个包的传递依赖产生的冲突 ?那该怎么办呢?当然,maven也会有相应的解决方案。

 首先,你要在pom.xml中加上maven-project-info-reports-plugin插件。

 

<reporting>
  <plugins>
   <plugin>
    <groupId>org.apache.maven.plugins</groupId>
    <artifactId>
     maven-project-info-reports-plugin
    </artifactId>
   </plugin>
 </reporting> 

 

 然后再执行:mvn project-info-reports:dependencies 。生成项目依赖的报表,这样你就能够在报表中找出你版本冲突的相关性依赖了。

最后在相应的dependency中加上exclusions来排除相关的传递依赖。

例:

<dependency>
   <groupId>jaxen</groupId>
   <artifactId>jaxen</artifactId>
   <version>1.1.1</version>
   <exclusions>
     <exclusion>
       <groupId>com.ibm.icu</groupId>
       <artifactId>icu4j</artifactId>
     </exclusion>
   </exclusions>
  <scope>runtime</scope>
</dependency> 

 

posted @ 2016-05-09 10:49  birkhoff001  阅读(276)  评论(0编辑  收藏  举报