盘点Maven解决jar包冲突问题方案。
Maven的依赖仲裁优先级
路径优先:1.对于该项目而言,根据jar包的依赖路径,短的优先
声明优先:2.路径一样,被依赖者声明的前后有关,同一个pom,前面的优先
覆写优先:3.子pom优先于父pom
使用exclusions来排除相应的重复依赖
例如,我的项目的pom.xml文件,引入下面两个依赖:
<dependency>
<groupId>org.loushang.framework</groupId>
<artifactId>loushang-framework</artifactId>
<version>7.2.0</version>
<type>pom</type>
</dependency>
<!--ureport http://www.bstek.com-->
<dependency>
<groupId>com.bstek.ureport</groupId>
<artifactId>ureport2-console</artifactId>
<version>2.2.9</version>
</dependency>
其中loushang-framework
底层又引入了org.apache.poi
3.14这个版本,而ureport2-console
引入的是org.apache.poi
3.16这个版本这个版本,这就导致了我ureport2报表导出excel功能无法使用。
如果我想保留poi 3.16这个版本,就可以使用exclusions来实现,修改pom.xml文件:
<dependency>
<groupId>org.loushang.framework</groupId>
<artifactId>loushang-framework</artifactId>
<version>7.2.0</version>
<exclusions>
<exclusion>
<groupId>org.apache.poi</groupId>
<artifactId>poi-ooxml</artifactId>
</exclusion>
<exclusion>
<groupId>org.apache.poi</groupId>
<artifactId>poi-scratchpad</artifactId>
</exclusion>
<exclusion>
<groupId>org.apache.poi</groupId>
<artifactId>poi-ooxml-schemas</artifactId>
</exclusion>
<exclusion>
<groupId>org.apache.poi</groupId>
<artifactId>poi</artifactId>
</exclusion>
</exclusions>
<type>pom</type>
</dependency>
<!--ureport http://www.bstek.com-->
<dependency>
<groupId>com.bstek.ureport</groupId>
<artifactId>ureport2-console</artifactId>
<version>2.2.9</version>
</dependency>
即,排除掉loushang-framework
底层引入的org.apache.poi
3.14这个版本。
参考:
- https://blog.csdn.net/HaiYunTai/article/details/53411746 ;
- http://wolfchina.iteye.com/blog/239934 ;
- Solving Dependency Conflicts in Maven;
最新评论
我的是ipv4网络,如何使用直播源啊!
我今天试了,不想啊,我的是新疆昌吉移动的网络。
收不到验证码电报
现在充值29起了