1.前言
作为一名一线的开发人员,maven大概率是我们用的最多的依赖管理,但是你知道我们的maven出现问题后怎么去排查么?不对,确切的来说,假如你去导入的包没有被成功导入,你有什么方法去排查、去解决这个问题,接下来一文,带你了解maven的保姆级解决思路。
2.武林秘籍
这篇我称为武林秘籍应该丝毫不过分吧,那么正片开始 !!!
一切的源头都是因为依赖包中的枚举类找不到导致的,最后的问题大家一定想不到,但是排查问题的思路确实我们需要去学习的
2.1 版本号
每个依赖它都是有自己的版本号的,随着业务能力的更替,版本号也在快速更新,我们首先要确定我们在当前项目中用的依赖版本号是不是最新的,更为恰当的来说,应该是我们引用的依赖是不是提供了我们当前所需要的能力,所以首先排查版本号最最简单、最便利的
2.2 依赖冲突
我们的maven依赖它是具有传递性的,所以很可能会造成这么一种情况
我们引用A的依赖,同时A中又引用了B的低版本依赖,我们这边又在本项目中引用了B的高版本依赖,这个时候就会出现依赖版本冲突,可能会导致我们引用到了低版本的依赖,导致某些类或者是某些方法找不到的情况,所以这个时候我们要学会用maven自带的Dependdency来解决分析
像这种有报红的就说明有版本冲突,需要解决,把自己所需要的版本留下即可
2.3 快照包需要注意提交时间
因为我们的maven有两种包,一种是正式包,另外一种是快照包,它们的唯一区别就是快照包可以随时更改代码,等上线的时候可以改为正式包,但是正式包就不可以随意更改代码了,如果想要更改代码,只能升级自己的版本进行迭代
我们在用快照包的时候,可能会发现这么一种情况 ,就是=明明你另外一个项目的代码已经修改了,但是打包之后,在我们这个项目中却找不到你这次更新的内容,是在令人头疼。
本地仓库可视化工具:https://nexus.zhuanspirit.com/nexus/#nexus-search;quick~openreco.contract
我们在本地仓库中可以快速的找到我们所依赖的版本,因为快照版本质检没有明显的区别,所以我们只能看我们引用的版本是什么时候提交的作为判断:
找到我们目标jar包
如果这个最近的更新时间不是你刚才打包的时间,那就说明你刚才打包失败了,重新打包上传
2.4清除idea缓存
idea是通过索引来加速文件和依赖的查找的,如果索引出现问题,依赖自然而然就找不到了,所以我们清除idea缓存,使其重新加载索引及其他内容
2.5 远程仓库
如果我们还是解决不了依赖问题,我们可以去检查一下我们的依赖包是否成功的被推到远程仓库中,在maven的settings中我们可以找到我们的远程仓库的地址
我们可以根据目录去找我们所需要的依赖的包是否存在,版本是否正确、更新时间是否是最新的
2.6 反编译
如果还是有问题,那么还有一种可能就是他自身打包的时候出现了问题,我们可以根据反编译工具对其项目进行查看
我们常用的反编译工具有两种,一是gui,另外一种是luten
但是我还是比较推荐luten的,因为有些内容gui是没办法反编译出来的,导致
我们手动的将项目编译成jar包,然后利用工具再把jar包反编译出来,检查是否存在问题
打包过程:
2.7 重启电脑
都说重启能解决99%的问题
2.8 idea的正盗版问题
我当时就是这个问题,解决个maveny依赖真是费劲了千辛万苦,最后才发现是idea本身的问题,下载了一个最新的社区版,完美解决这个问题