关于Cannot resolve xxx的解决办法

有时候,我们明明没做其它什么配置,只是升级了某些依赖软件的版本,但是当我们下载依赖的时候,会出现Cannot resolve xxx的情况,即本地没有找到对应版本的依赖包。

常规解决办法如下:

1)检查idea设置里面的maven设置,查看相关maven的配置路径是否正确。

2)清除缓存并重启idea

很多时候重启可以解决一大部分问题

3)刷新pom文件

我遇到的问题用上面方案都不能解决,我的问题是:

pom文件升级了某个开源软件,但是在reload项目的时候会报Cannot resolve 该软件,然后我本地查看maven仓库,发现确实是没有该新版本的软件包,只有老版本软件包的路径,当时第一反应是不是我的settings.xml有问题,然后询问同事拿了他们的settings.xml文件,结果还是无济于事。

又捣鼓了好久,比如将依赖删除之后再加上,最后再reload项目也是不行。

解决办法

最终实在想不过,打开了我平时写测试代码的工程,在该工程里面加入有问题的这个依赖,最后reload了一下,发现就没有问题了,然后再去本地maven仓库看了一下,确实有了新版本软件包的路径。

然后回到原来的项目工程,再重新reload了一下也是没有问题了。

所以就有点莫名其妙的感觉,居然会出现本项目不能下载,另一个项目能下载依赖的情况

原因分析:

然后我仔细想了想,觉得那应该是我本项目做了其它设置,最后通过查阅资料得知,我居然将本项目maven的脱机模式打开了,这个按钮在idea右边的maven里面,在m的右边(不方便放图),叫做Toggle Offline Mode。

脱机模式:只能加载本地已有的依赖,如果本地仓库没有这个版本的依赖,那就自然会出现Cannot resolve xxx的现象。解决办法就是取消这个脱机模式,也就是点灭这个按钮。

至于为什么我当初会点亮这个按钮(打开脱机模式),也是因为我之前看了某篇文章,说是这样会缩短我们启动idea的时间,因为我们在启动idea的时候会去加载当前项目的配置,会很费时,所以当处于脱机模式的时候,在启动idea的时候就会省去一些不必要的配置加载,会提高效率。

事实证明,这个模式并没有节约我的时间...我保证以后不偷懒了。。。

最后附加一个大家经常遇到的证书问题,也就是我们需要添加忽略SSL检查的配置。需要在两个地方添加配置,一是在Maven的VM Options中添加如下配置:

-Dmaven.wagon.http.ssl.insecure= true -Dmaven.wagon.http.ssl.allowall=true

二是在Runner的VM Options中添加如下配置:

-Dmaven.wagon.http.ssl.insecure= true -Dmaven.wagon.http.ssl.allowall=true -Dmaven.wagon.http.ssl.ignore.variety.dates=true

 

 

 

 

 

 

你可能感兴趣的:(java,java)