Maven无法下载依赖之PKIX path building failed问题及解决

在使用Maven从中央库下载依赖时, 报如下错误:

[[1;31mERROR[m] Plugin org.apache.maven.plugins:maven-source-plugin:3.0.1 or one of its dependencies could not be resolved: Failed to read artifact descriptor for org.apache.maven.plugins:maven-source-plugin:jar:3.0.1: Could not transfer artifact org.apache.maven.plugins:maven-source-plugin:pom:3.0.1 from/to central (https://repo.maven.apache.org/maven2): sun.security.validator.ValidatorException: PKIX path building failed: sun.security.provider.certpath.SunCertPathBuilderException: unable to find valid certification path to requested target -> [1m[Help 1][m
[[1;31mERROR[m]
[[1;31mERROR[m] To see the full stack trace of the errors, re-run Maven with the [1m-e[m switch.
[[1;31mERROR[m] Re-run Maven using the [1m-X[m switch to enable full debug logging.
[[1;31mERROR[m]
[[1;31mERROR[m] For more information about the errors and possible solutions, please read the following articles:
[[1;31mERROR[m] [1m[Help 1][m http://cwiki.apache.org/confluence/display/MAVEN/PluginResolutionException

这里方式以上错误的开发环境是:
1.配置了JAVA_HOME 环境变量和PATH
2. 企业内部有自己的证书,看起来对其他证书做了封装

一般状况下, Maven 的库的证书是被信任的,因为这个证书在Java安装的时候就被包含在Java的证书库了。但是如果根证书使用企业内部的,则Java就不认识了, 所以需要将这个证书导入证书库中。

导入的主要步骤是:

  1. 使用Chrom 导出证书
  2. 使用 keytool -import导入证书,因为配置了JAVA_HOME,所以需要导入到JDK目录下的 jre\lib\security\cacerts 文件中, 具体命令如下:
keytool -import -trustcacerts  -alias mvnrepo  -file c:\\cert\mvnrepo.crt -keystore  "C:\Program Files\Java\jdk1.8.0_131\jre\lib\security\cacerts" -storepass changeit

如果需要, 可以将这个证书同步导入到JRE目录的证书库文件cacerts 中,关于Java安装证书,可以参考: Java如何安装https证书

问题又现

使用一段时间之后, 某天又突然不行了,错误还是 PKIX 的证书问题。

解决方式是把之前添加的证书条目删除, 从浏览器下载之后, 重新导入:

从证书库删除证书:

keytool -delete -alias mvnrepo -keystore  "C:\Program Files\Java\jdk1.8.0_131\jre\lib\security\cacerts" -storepass changeit

导入证书:

keytool -import -trustcacerts  -alias mvnrepo  -file c:\\cert\mvnrepo.crt -keystore  "C:\Program Files\Java\jdk1.8.0_131\jre\lib\security\cacerts" -storepass changeit

注意:

  • 如果是命令窗口执行 mvn 命令触发更新, 需要新开命令窗口

你可能感兴趣的:(Java,基础,进阶与实战和笔试面试,460-Tools,maven,java,https)