`

Could not transfer artifact org.springframework.boot:spring-boot-starter-parent

 
阅读更多
前言:之前创建SpringBoot项目也出现过此问题,但是换了一个maven仓库好使了,但是没过多久那个仓库访问不了了,然后项目就开始报错。这几天自己创建项目又出现了这个问题,感觉再不彻底解决,人都不好了。

一、问题描述
       通过Spring Initializer创建SpringBoot项目,发现出现了问题,我首先检查的是maven的settings的配置文件,发现其中配置的是阿里云的仓库,配置是没有问题的,但是包还是导入不进去,reimport也没有效果。执行clean命令显示的是如下的错误:

        Could not transfer artifact org.springframework.boot:spring-boot-starter-parent:pom:2.2.0.RELEASE from/to nexus-aliyun (https://maven.aliyun.com/nexus/content/groups/public): sun.security.validator.ValidatorException: PKIX path building failed: sun.security.provider.certpath.SunCertPathBuilderException: unable to find valid certification path to requested target

有图有真相:
[img][/img]

二、查找问题原因
进入报错的网站查找springbootRELEASE2.2.0的(https://maven.aliyun.com/repository/central)



显而易见,是有这个包的。后来换了其他的版本,还是这个德性,由此可见并不是版本的问题。

然后针对报错信息的后半部分进行研究,找到问题的解决方法。

后半部分报错信息:

        sun.security.provider.certpath.SunCertPathBuilderException: unable to find valid certification path to requested target(无法找到有效的证书)

意思就是服务器提供的证书不被我们客户端信任。

三、解决方法(两种方法)
第一种方法:在执行maven命令时忽略证书检查
在此处设置忽略证书检查



忽略证书检查的命令:

-Dmaven.wagon.http.ssl.insecure=true -Dmaven.wagon.http.ssl.allowall=true -Dmaven.wagon.http.ssl.ignore.validity.dates=true
亲测好使:



第二种方法:手动导入证书,即将安全证书导入到java的cacerts证书库
确保maven中settings.xml中的阿里源配置正确

<mirror>
   <id>nexus-aliyun</id>
   <mirrorOf>central</mirrorOf>
   <name>Nexus aliyun</name>
   <url>https://maven.aliyun.com/nexus/content/groups/public</url>
</mirror>
打开阿里源的网址:https://maven.aliyun.com/nexus/content/groups/public或https://maven.aliyun.com/repository/central(都是一样的)

在chrome浏览器下载证书到本地



根据以下步骤,一直next,将文件命名为ali_maven,后缀默认为.cer,保存到D盘根目录



设置导出证书的编码格式:



通过证书添加java信任证书库

(1)打开C:\Program Files\Java\jdk1.8.0_121\jre\lib\security目录。(cacerts包含了很多CA证书,位置在Java的安装目录:如: C:\Program Files\Java\jdk1.8.0_121\jre\lib\security\carcerts)

(2)在该目录下以管理员身份打开命令提示符(cmd)

(3)输入该命令:keytool -import -alias cacerts -keystore cacerts -file d:\ali_maven.cer

(4)输入默认的密钥库口令:changeit

(5)是否信任此证书?[否]:Y

(6)显示证书已添加到密钥库中即表示添加成功

(7)回到项目中重新clean,complie,解决问题。

四、总结
第一种方法感觉治标不治本,只是针对当前的项目来说是可以的,但是每次创建项目加那个配置比较麻烦,对比第二种方法包导入的速度比较慢,而且下次再创建项目也不需要再做配置。建议使用第二种方法,问题解决的十分彻底。
————————————————
版权声明:本文为CSDN博主「Deamer1102」的原创文章,遵循CC 4.0 BY-SA版权协议,转载请附上原文出处链接及本声明。
原文链接:https://blog.csdn.net/weimenglala/java/article/details/104800011
分享到:
评论

相关推荐

Global site tag (gtag.js) - Google Analytics