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

Maven的依赖仲裁优先级

路径优先:1.对于该项目而言,根据jar包的依赖路径,短的优先
声明优先:2.路径一样,被依赖者声明的前后有关,同一个pom,前面的优先
覆写优先:3.子pom优先于父pom

使用exclusions来排除相应的重复依赖

例如,我的项目的pom.xml文件,引入下面两个依赖:


    org.loushang.framework
    loushang-framework
    7.2.0
    pom



    com.bstek.ureport
    ureport2-console
    2.2.9

其中loushang-framework底层又引入了org.apache.poi 3.14这个版本,而ureport2-console引入的是org.apache.poi 3.16这个版本这个版本,这就导致了我ureport2报表导出excel功能无法使用。

如果我想保留poi 3.16这个版本,就可以使用exclusions来实现,修改pom.xml文件:


    org.loushang.framework
    loushang-framework
    7.2.0
    
        
            org.apache.poi
            poi-ooxml
        
        
            org.apache.poi
            poi-scratchpad
        
        
            org.apache.poi
            poi-ooxml-schemas
        
        
            org.apache.poi
            poi
        
    
    pom



    com.bstek.ureport
    ureport2-console
    2.2.9

即,排除掉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