导读:在实际开发中,多模块项目常会使用Maven进行包管理。在poml文件中进行包依赖时,常存在引入一个jar包中默认依赖了其他的jar包的情况。这样很容易导致jar包冲突,从而产生一些诡异问题,如版本问题导致的类、方法找不到等。下面我们将聊聊具体关于依赖冲突产生的原因、排查方式以及解决的方案。
依赖传递的概念
举个简单例子,比如一个多模块项目依赖关系如下图。其中bepe-dal引入了common-lib,当bepe-manager模块中引入bepe-dal时,common-lib这个依赖也会被引入到bepe-manager模块中,这个就是依赖传递。
依赖冲突的概念
依赖冲突指当模块中引入很多jar包时,如果其中存在着groupId和artifactId 一样,但是version不一样的两个jar包,这就是依赖冲突。那么在应用时会选用哪一个version呢?这就是我们接下来要讨论的冲突解决方式。