最近换了新电脑,将之前可以正常运行的spring boot社区项目迁移到新电脑上时,在IDEA中使用maven管理项目时,出现了了无法下载插件,maven plugins和依赖大面积报红的,导致项目无法启动的情况。
下面是本人使用的开发工具、错误现象和解决方法。
版权声明:本文为博主原创文章,禁止转载
作者博客:codesong.cn
created: 2020-03-06
开发工具
InteliJ IDEA 2019.2.3
maven 3.6.1
操作系统:Windows 10家庭版
maven镜像:阿里云仓库
电脑上安装IDEA、maven,并将maven镜像设置为阿里云仓库后,在IDEA中设置maven路径、setting文件、本地仓库位置:
报错
-
在新电脑上安装、配置好maven后打开spring boot社区项目,maven插件和依赖出现大面积红色报错,如下:
maven报错
-
多次点击“Reimport ALL Maven Projects”重新导入maven依赖都无效,新建一个maven工程,出现“Cannot resolve plugin org.apache.maven.plugins:maven-clean-plugins:2.5”等报错:
maven报错2
显然,maven无法从仓库中下载文件,导致本地maven仓库中没有所需插件而报错。
解决方法
在网上找了多种报错原因及解决方法,maven配置出现错误的情况很多,下面介绍常见的情况和解决方法。
①IDEA中maven设置不正确
上文中介绍我的开发环境时提到,IDEA中需要设置Maven home direction、User setting file、Local repository三项,分别时使用的maven路径、maven配置文件、maven本地仓库存放位置。
要理解三个选项的意思,合理配置,最好保持一致。
②重新加载maven项目时,需删除旧文件
maven从仓库中下载文件到本机时,下载失败时会产生后缀为“lastUpadated”的文件,如下图:
点击“Reimport ALL Maven Projects”重新下载maven文件时,如果不删除这些文件,新文件也无法下载。
因此需要在本地maven仓库中删除所有 .lastUpdated 文件,才能重新加载maven工程。这是maven项目加载失败的常见原因之一。
③镜像仓库证书有问题
导入maven仓库时出现镜像仓库证书报错:
Could not transfer artifact org.mybatis.spring.boot:mybatis-spring-boot-starter:pom:2.1.1 from/to nexus-aliyun (http://maven.aliyun.com/nexus/content/groups/public): PKIX path building failed: sun.security.provider.certpath.SunCertPathBuilderException: unable to find valid certification path to requested target
最后一句“unable to find valid certification path”,说明报错原因是在Java库中没有找到镜像仓库https://maven.aliyun.com的证书,需要将该网站的证书添加到密匙库中。
具体操作可以参考:https://www.firstxueba.com/thread-3510-1-1.html
我完成添加证书的操作后,问题仍然没有解决。
最终的解决方法-使用maven默认仓库
以上是三种常见的maven错误以及解决方法,本人一一尝试后还是没有解决问题。
但是经过分析确定我出错的原因是:无法从maven的阿里云镜像仓库中下载文件,导致maven plugins、dependencies无法加载。
因此我决定在maven的配置文件中将阿里云镜像删掉,使用maven默认仓库。
删除所有.lastUpdated文件重新导入maven项目,在漫长的等待之后,maven终于从默认仓库中下载所有文件。 plugin和dependency报红消失,问题解决:
查看本地仓库如下:
另外,在网上看到有人对于我这种maven大面积报红的现象,建议是使用IDEA自带的maven,不使用自己安装的maven,否则很难解决问题。 原文链接 https://blog.csdn.net/qq_43114196/article/details/104100089 可做参考。
总结
上文介绍的几种常见的错误及方法,基本上能解决大多IDEA配置maven的问题。
最终的解决方法是进行使用maven默认的仓库,没有使用阿里云镜像仓库。虽然有些妥协,默认仓库加载速度稍慢,但最终解决了问题,并且对maven的配置和使用方法更加熟悉,也算是收获吧。