You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

部署Maven构建JAR至GitHub Package Registry时遇异常求助

解决Maven部署到GitHub Packages的400错误

我之前踩过这个400错误的坑,结合你给出的配置和报错信息,大概率是几个配置细节没对齐,咱们一步步来排查解决:

1. 缺失SNAPSHOT版本的仓库配置

你的项目版本是0.0.2-SNAPSHOT,属于快照版本,但你在pom.xml的<distributionManagement>里只配置了正式版本的<repository>,没有配置快照版本专属的<snapshotRepository>。GitHub Packages要求快照版本和正式版本分别对应不同的仓库配置(哪怕URL相同),否则会返回400错误。

修改你的pom.xml,添加<snapshotRepository>节点,注意ID要和你settings.xml里的server ID保持一致:

<distributionManagement>
    <repository>
        <id>github</id>
        <name>GitHub OWNER Apache Maven Packages</name>
        <url>https://maven.pkg.github.com/swastikaa-in/math</url>
    </repository>
    <snapshotRepository>
        <id>github</id>
        <name>GitHub OWNER Apache Maven Snapshots</name>
        <url>https://maven.pkg.github.com/swastikaa-in/math</url>
    </snapshotRepository>
</distributionManagement>

2. 检查个人访问令牌(PAT)的权限

你的400错误也可能是PAT权限不足导致的。登录GitHub后,前往Settings > Developer settings > Personal access tokens,找到你使用的令牌,确认勾选了以下权限:

  • write:packages:必须有这个权限才能上传包到GitHub Packages
  • repo:如果你的math仓库是私有仓库,需要勾选这个权限来确保访问权限

如果权限不全,重新生成一个包含所需权限的令牌,替换settings.xml里的密码字段。

3. 确认所有ID的一致性

检查以下几处的ID是否完全一致(都是github):

  • settings.xml里<server>的<id>
  • pom.xml里<distributionManagement>下<repository>和<snapshotRepository>的<id>
  • settings.xml里<profile>下<repository>的<id>

哪怕是大小写错误或者拼写差异,都会导致认证失败或者仓库匹配错误,进而返回400。

4. 验证仓库URL的正确性

确认distributionManagement里的URL是https://maven.pkg.github.com/swastikaa-in/math,这个格式是正确的(OWNER/REPO_NAME),同时确保swastikaa-in/math这个GitHub仓库确实存在,并且你拥有该仓库的写入权限。

完成以上修改后,执行mvn clean deploy重新尝试部署,应该就能解决400错误了。

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

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.05.14 08:01:31