将私有Maven项目发布到GitHub Packages报422错误如何解决?
解决方案
1. 检查PAT权限
你的settings.xml中配置的密码是GitHub个人访问令牌(PAT),必须确保该令牌创建时勾选了以下权限:
repo:私有仓库读写权限write:packages:包上传权限read:packages:包下载权限
如果原有令牌权限不全,需要重新生成令牌替换settings.xml中server节点下的password值。
2. 修正Spring Boot打包配置
由于你引入了spring-boot-maven-plugin,默认会将项目打包为可执行的Fat Jar,GitHub Packages不允许直接发布无分类器的可执行Jar作为依赖构件,可通过以下两种方式解决:
方式1:为可执行包添加分类器
在pom.xml的spring-boot-maven-plugin节点添加配置:
<plugin> <groupId>org.springframework.boot</groupId> <artifactId>spring-boot-maven-plugin</artifactId> <configuration> <classifier>exec</classifier> </configuration> </plugin>
该配置会同时生成普通依赖Jar和带exec后缀的可执行Jar,仅普通Jar会被作为依赖发布。
方式2:移除Spring Boot打包插件
如果你的项目仅作为依赖包使用,不需要可执行能力,可以直接删除pom.xml中的spring-boot-maven-plugin插件节点。
3. 检查版本发布规则
GitHub Packages默认禁止覆盖已发布的正式Release版本:
- 如果你之前已经成功上传过
0.0.3版本的包,需要将pom.xml中的version值升级为新的版本号(如0.0.4),或进入GitHub仓库的Packages页面删除旧版本的对应包后再重试。 - 如果你需要允许覆盖快照版本,确保
settings.xml中对应仓库的snapshots.enabled配置为true(你当前配置已经符合要求)。
4. 验证仓库地址拼写
确认pom.xml中distributionManagement.repository.url的格式为https://maven.pkg.github.com/你的GitHub用户名/仓库名,你当前的配置拼写正确,无需修改。
完成以上调整后,重新执行mvnw clean deploy即可完成发布。
内容的提问来源于stack exchange,提问作者Sagar Nayak
相关产品推荐
相关产品推荐

