You need to enable JavaScript to run this app.
最新活动
大模型
产品
解决方案
定价
生态与合作
支持与服务
开发者
了解我们

执行mvn clean install遇依赖解析失败,排查代理等仍未解决

解决Maven依赖解析的PKIX路径错误

先把你遇到的错误信息明确出来,方便针对性排查:

[ERROR] Plugin org.apache.maven.plugins:maven-clean-plugin:2.5 or one of its dependencies could not be resolved: Failed to read artifact descriptor for org.apache.maven.plugins:maven-clean-plugin:jar:2.5: Could not transfer artifact org.apache.maven.plugins:maven-clean-plugin:pom:2.5 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 -> [Help]

这个PKIX路径错误我之前也踩过几次坑,虽然你已经做了代理、镜像和证书的基础配置,但还有几个容易忽略的点可以排查:

1. 确认证书真的导入到了Maven使用的JDK信任库

很多时候我们会把证书导入到系统默认JRE,但Maven可能用的是另一个JDK的信任库。先查清楚Maven依赖的JDK:

mvn -version

输出里会显示Java versionJava home,比如Java home: /usr/lib/jvm/java-11-openjdk-amd64/jre

然后检查这个JDK的cacerts里是否包含中央仓库(或代理)的证书:

keytool -list -keystore <你的Java home路径>/lib/security/cacerts -alias maven-central

默认密码是changeit。如果提示“找不到别名”,说明证书没导入成功,重新执行导入命令:

keytool -importcert -file <你的证书文件路径>.crt -keystore <你的Java home路径>/lib/security/cacerts -alias maven-central

输入密码后确认“是否信任此证书”,输入y即可。

2. 检查Maven Settings里的配置是否冲突

打开你的settings.xml(通常在~/.m2/settings.xmlMAVEN_HOME/conf/settings.xml),检查:

  • 如果配置了<server>标签,有没有指定自定义trustStore?如果有,要确认这个信任库包含了所需证书,否则可以暂时注释掉这个配置,让Maven用JVM默认的信任库。示例冲突配置:
<servers>
  <server>
    <id>central</id>
    <trustStore>/custom/path/truststore.jks</trustStore>
    <trustStorePassword>custom-pass</trustStorePassword>
  </server>
</servers>
  • 代理配置是否正确?如果用了公司代理,要确保代理地址、端口、认证信息都没错,而且代理的根证书已经导入到信任库。

3. 清理本地Maven仓库的缓存

本地仓库里的依赖缓存可能损坏,导致证书验证失败。删除maven-clean-plugin的2.5版本目录:

rm -rf ~/.m2/repository/org/apache/maven/plugins/maven-clean-plugin/2.5

然后强制更新依赖重新构建:

mvn clean install -U

-U参数会强制Maven更新快照和远程依赖的元数据。

4. 排查代理证书(如果使用代理)

如果是通过公司代理访问中央仓库,只导入中央仓库的证书是不够的,还需要导入代理服务器的根证书。联系运维拿到代理的根证书,然后按照步骤1的方法导入到Maven使用的JDK信任库中。

5. 检查环境变量和Maven配置的一致性

确保JAVA_HOME环境变量指向的JDK和Maven使用的JDK一致(用mvn -version确认)。有时候我们手动设置了JAVA_HOME,但Maven用了系统默认的JDK,导致证书导入的位置不对。

如果以上步骤都试过还是不行,可以尝试直接访问中央仓库的pom文件,用浏览器检查证书链是否完整,确认你的机器能正常信任这个证书链。

内容的提问来源于stack exchange,提问作者RupeshJha

火山引擎 最新活动