Maven解决jar冲突
?传递依赖是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>?
</plugins>
</reporting>?
然后再执行:mvn project-info-reports:dependencies 。生成项目依赖的报表,这样你就能够在报表中找出你版本冲突的相关性依赖了。如出现OutOfMemoryError错误,在系统环境中加入参数 MAVEN_OPTS=-Xmx512m?
最后在相应的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>