maven的间接引用会引入其他未声明的包,maven自身的冲突解决方案,最终引用的包可能不是希望的版本。

  

  直接声明期望的版本号,就没有间接引用的问题。

  子模块很多时,可以使用dependencyManagement在父模块中统一管理。

  父模块中配置:

<dependencyManagement>
<dependencies>
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-web</artifactId>
<version>1.2.3.RELEASE</version>
</dependency>
</dependencies>
</dependencyManagement>

  子模块则无需指定版本信息:

<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-web</artifactId>
</dependency>

  dependencyManagement中定义的只是依赖的声明,并不实现引入,因此子项目需要显式的声明需要用的依赖。

  发生ClassNotFoundException等包冲突的引起的问题时,可以如下解决:

  intellj中Reimport,会重新下载对应的包,解决IDE缓存的问题。

  

  还是存在冲突时,mvn dependency:tree命令,查看间接引入的来源。

  mvn dependency:tree >tree.txt,使用该命令将结果重定向到tree.txt中,方便查看。

  

  mvn dependency:tree找到是哪个模块的哪个包间接引入了版本有问题的包,使用exclusion切断引用关系。 

<dependency>
<groupId>org.unitils</groupId>
<artifactId>unitils-dbmaintainer</artifactId>
<version>${unitils.version}</version>
<exclusions>
<exclusion>
<artifactId>asm</artifactId>
<groupId>asm</groupId>
</exclusion>
</exclusions>
</dependency>

最新文章

  1. bzoj4314
  2. IOS setValue forKey
  3. WCF配置工具及服务调试工具
  4. hashmap and hashtable
  5. jQuery.Autocomplete实现自动完成功能
  6. GitHub Android 最火开源项目Top20 GitHub 上的开源项目不胜枚举,越来越多的开源项目正在迁移到GitHub平台上。基于不要重复造轮子的原则,了解当下比较流行的Android与iOS开源项目很是必要。利用这些项目,有时能够让你达到事半功倍的效果。
  7. postgres-xc手册生成方法
  8. python实战第一天-环境的安装
  9. Android艺术——深看Activity的生命周期
  10. List 去重
  11. mysql关联模糊查询他表字段
  12. Learn jQuery in y seconds
  13. HTML的5种空格表示
  14. (转自知乎)Unicode编码
  15. A股ROE连续3年超过15%的股票排名
  16. json排序 及替换在字符串中全部替换某字符串
  17. 强化学习7-Sarsa
  18. Python内置的subprocess.Popen对象
  19. Debug 路漫漫-04
  20. ostringstream的用法

热门文章

  1. eclipse项目版本控制忽略上传文件
  2. day05 Spring中自定义注解的用处-之获取自定义的Servie
  3. mysql(mariadb)新建用户及用户授权管理
  4. C++中的智能指针、轻量级指针、强弱指针学习笔记
  5. nodejs-hook 开发
  6. phpdocumentor安装和使用总结
  7. is_null, empty, isset的区别
  8. 递归和非递归分别实现求n的阶乘
  9. CLR(Common Language Runtime) 公共语言运行库
  10. [转]Java对象的序列化和反序列化