部署Maven构建JAR至GitHub Package Registry时遇异常求助
我之前踩过这个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 Packagesrepo:如果你的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

