1.报错解释
这是我在使用自己从apache下载的maven的时候碰到的bug,网上绝大部分解释都说是setting.xml文件出问题了,但我很明确我不是这个问题。报错字面意思来看就是pom文件出了问题,idea没法解析了,可以理解为idae在解析pom文件的时候遇到了不认识的东西。
2.可能原因
2.1setting.xml文件语法异常
2.2本地仓库里的内容异常
当你的报错出现如下情况时,那大概率是本地仓库里的文件内容出了问题。
2.3pom文件语法错误
3.解决办法
对于原因一,如果熟悉settings.xml文件,可以自己打开去排查错误(大部分情况是我们自行更改settings文件中的mirror和localrepository的时候失误导致语法不通过),如果不熟悉,可以复制idae自带的maven中的settings文件过去。
对于原因二,可以将当前配置的仓库里的内容清空,或者重新指派一个空的或完备的仓库,毕竟maven想要的东西如果本地仓库没有他是会去下载的,注意需要联网和下载时间哈,重新指派仓库只需要打开当前项目的settings并Override其中maven设置中Local Repository的路径。
对于原因三,语法报错会有编译提示,找到报错点然后好好检查语法就行。
4.原因分析
4.1对于setting文件问题
自行下载一个maven之后,我们一般会对他的conf目录下的settings.xml文件中的镜像做配置,毕竟一般情况下国内网站的访问速度大于国外,但是修改文件的过程中,可能会错误的删掉或者多加了一些什么东西,导致文件语法不对,进而导致报错。(大部分情况是我们自行更改settings文件中的mirror和localrepository的时候失误导致语法不通过)
4.2对于本地仓库问题
4.2.1查看自己当前配置的本地仓库位置
首先,我们查看当前maven项目使用的是哪个本地仓库,打开当前项目的设置(settings),再手动搜索maven便可以看到maven的设置了,众所周知,咱maven文件的插件,依赖等都是从本地仓库里拿到的,如果本地仓库没有则优先去中央仓库,其次去我们在setting.xml文件中配置的远程仓库中去下载并同步到本地仓库中去(所以这里本地仓库的作用类似于缓存?)
4.2.2结合报错信息和当前配置的本地仓库里的文件
比如我的报错中有无法解析的插件
这时候我再到配置的本地仓库的位置中去查看对应文件(idea中的文件名对应仓库中的文件路径),然后就会发现有很意思的东西。
有些是插件对应的版本缺失
有些是存在对应版本但无法解析
这边推测一下:有可能是idae和maven版本的问题,导致idae自带的仓库里的内容不是maven想要的,但是又因为文件夹名字能匹配上,占据了位置,导致无法重新下载(占着茅坑不拉屎)。