You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多
文档控制台
免费开始使用

Maven无法从官方仓库下载依赖/插件,PKIX证书问题求助

解决Maven PKIX证书路径构建失败问题

你遇到的是非常常见的Maven SSL证书信任问题,本质是你的JVM没有信任Maven中央仓库的SSL证书,或者网络环境(比如公司代理)拦截了请求导致证书不被认可。我之前踩过同样的坑,给你几个按优先级排序的解决方案:

1. 先检查网络代理(最可能的原因)

很多公司网络会通过代理访问外部资源,这时候代理会替换掉中央仓库的原始SSL证书,导致JVM无法验证。

  • 先确认你的Maven settings.xml(一般在~/.m2/settings.xmlconf/settings.xml)里有没有代理配置,如果有,需要把代理服务器的证书导入JVM信任库,而不是中央仓库的证书。
  • 用命令行测试访问:
    curl -v https://repo1.maven.org/maven2/com/fasterxml/jackson/core/jackson-databind/2.9.9/jackson-databind-2.9.9.pom
    
    看输出里的证书信息,如果显示的是公司代理的证书,就说明问题出在代理上。

2. 正确导入中央仓库证书到JVM信任库

如果你之前导入证书没成功,可能是路径或步骤错了:

  • 下载证书:用浏览器打开https://repo1.maven.org/maven2,点击地址栏的锁图标 → 查看证书 → 导出证书(格式选DER或PEM)。
  • 找到JVM信任库位置
    • JDK 8及以下:$JAVA_HOME/jre/lib/security/cacerts
    • JDK 9+:$JAVA_HOME/lib/security/cacerts
      默认密码是changeit
  • 导入证书:执行以下命令(替换路径为你的证书和JDK路径):
    keytool -import -alias maven-central -file /path/to/maven-central.cer -keystore $JAVA_HOME/jre/lib/security/cacerts
    
  • 导入完成后,重启你的IDE和Maven,再尝试构建。

3. 临时跳过SSL验证(仅开发环境使用)

如果只是想快速解决问题,不想折腾证书,可以临时让Maven跳过SSL检查:

  • 命令行方式:
    mvn clean install -Dmaven.wagon.http.ssl.insecure=true -Dmaven.wagon.http.ssl.allowall=true -Dmaven.wagon.http.ssl.ignore.validity.dates=true
    
  • 或者在settings.xml里配置全局生效:
    <profiles>
      <profile>
        <id>skip-ssl-validation</id>
        <activation>
          <activeByDefault>true</activeByDefault>
        </activation>
        <properties>
          <maven.wagon.http.ssl.insecure>true</maven.wagon.http.ssl.insecure>
          <maven.wagon.http.ssl.allowall>true</maven.wagon.http.ssl.allowall>
          <maven.wagon.http.ssl.ignore.validity.dates>true</maven.wagon.http.ssl.ignore.validity.dates>
        </properties>
      </profile>
    </profiles>
    
    注意:这个方法不推荐在生产环境使用,会降低安全性。

4. 确认Maven使用的JDK版本

有时候IDE和系统用的JDK不是同一个,导致你导入证书的信任库和Maven实际使用的不匹配。可以用以下命令查看Maven绑定的JDK:

mvn -version

确保你导入证书的是这个命令输出里的JDK路径对应的信任库。

你提到用同事的本地仓库能成功,说明依赖本身是正常的,问题完全在网络和证书验证环节。按照上面的步骤排查,应该能解决你的问题。

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

火山引擎 最新活动