优米格
分享有营养的

Maven解决jar包冲突问题方案大盘点

BraUndress.png

盘点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这个版本。

参考:

  1. https://blog.csdn.net/HaiYunTai/article/details/53411746 ;
  2. http://wolfchina.iteye.com/blog/239934 ;
  3. Solving Dependency Conflicts in Maven
赞(0)
未经允许禁止转载:优米格 » Maven解决jar包冲突问题方案大盘点

评论 抢沙发

合作&反馈&投稿

商务合作、问题反馈、投稿,欢迎联系

广告合作侵权联系