实际开发的过程中,使用maven帮我们进行项目依赖的管理,节省了大量的代码时间。但是在使用maven管理依赖信息时也会出现一些小问题,比如项目依赖突然报红,maven依赖无法正常加载问题。
1. 背景
在项目开发阶段,对于老的项目大家一般不去做改动,但是当我们升级架构或代码重构时就会有版本升级的需求,如JDK、MySQL版本的升级,SpringBoot版本的升级,Maven或IDEA编辑器版本的升级都时有发生。而在某一时刻起,项目就可能出现了故障,让人惶惶不知问题所在,甚至无奈回到最初的起点。
2. 依赖报错
本次项目中依赖信息的报错主要表现为:
项目文件报红
代码文件中注解和引入信息报红
Maven依赖信息报红
3. 尝试恢复
出现了该问题后,比较容易判断出是maven依赖不能够正常加载导致的。但是具体是如何产生的,为什么之前用着好好的,那到底要怎么解决呢?带着这一系列的疑问,我开始了与IDEA编辑器和maven的斗智斗勇。
首先,按照以往的经验,maven报错就重新下载试试,多次点击刷新和重新下载后无任何变化,且发现此时的maven是无法正常下载的;
然后,便考虑是否是IDEA导入项目时依赖没有正确加载或是IDEA临时抽风(确实碰到过),便移除项目,重启IDEA并加载项目,发现无任何变化,再次排除IDEA的问题;
之后,想到无法下载依赖是否是maven的配置文件中配置的镜像出现了问题,而已经下载依赖爆红是否是IDEA中指定的maven仓库位置不正确导致,在IDEA的maven配置中检查,发现配置皆正常没有任何变动。
正常开发的项目突然报错,想想都有些可笑,被逼无奈的我终于要对maven下手,尝试重新下载maven并配置到IDEA中。忽然想到IDEA中是自带maven的,即Bundled(Maven3),当初放弃使用是因为自定义maven更灵活的使用镜像等配置信息;
最后,抱着尝试的态度切换maven配置到Bundled(Maven3),配置文件和仓库路径不变,在Apply的瞬间,爆红消失!找到了问题所在。
4. 发现问题之后
找到了问题的解决方法后,基本将问题的原因定位在了maven上。为了进一步验证,在Maven官网地址下载了不同版本(v3.5.4)的maven,配置到IDEA中后,发现是没有问题的,而再次切换至原来的版本(v3.0.5),一下就全红了。
后来又仔细思考项目中有可能发生的变动就只有是SpringBoot的版本从1.x升至2.x了,其他版本都没有变化。
5. 相关工具版本信息
IDEA版本:2019.3.3
报错maven版本:3.0.5
SpringBoot版本:2.2.6.RELEASE
6. 思考
本次项目的依赖报红,尽管是个很小的问题,但是自己独立的解决掉确很有成就感,积累经验、掌握技巧、举一反三,以后遇到类似的问题可以更快速的定位问题所在并及时解决。