Gradle发布至Github Package Registry返回403 Forbidden求助
我之前也碰到过类似的发布失败情况,结合你的描述和报错堆栈信息,给你几个可以尝试的排查方向:
检查PAT的权限与有效性
虽然你之前能正常发布,但有可能PAT的权限范围被调整过,或者已经过期。请登录GitHub,进入「Settings」→「Developer settings」→「Personal access tokens」,确认你的PAT具备write:packages和repo(私有仓库必填)权限,并且没有过期。如果权限不足,重新生成一个包含必要权限的PAT替换原有配置。确认仓库Package的访问权限
有时候仓库的Package权限配置会发生变化,比如你的账号被意外移除了协作者列表,或者Package的写入权限被限制为特定团队。进入目标仓库的「Settings」→「Packages」,检查当前账号是否拥有「Write」权限,确保没有被权限规则排除在外。验证Gradle配置中的认证信息
检查build.gradle(或settings.gradle)中的Maven仓库配置是否正确:repositories { maven { name = "PersuadeCore" url = uri("https://maven.pkg.github.com/persuade-loyalty-llc/persuade-core") credentials { username = project.findProperty("gpr.user") ?: System.getenv("GITHUB_ACTOR") password = project.findProperty("gpr.key") ?: System.getenv("GITHUB_TOKEN") } } }确认用户名是你的GitHub账号,密码是有效的PAT,环境变量或项目属性中的值没有被误修改。
用curl手动测试上传
排除Gradle配置的问题,尝试用curl直接上传一个测试文件:curl -u YOUR_GITHUB_USERNAME:YOUR_PAT -X PUT "https://maven.pkg.github.com/persuade-loyalty-llc/persuade-core/com/persuade/persuade-core/1.0.11/test.jar" --data-binary "@test.jar"如果curl也返回403,说明问题出在GitHub的权限设置;如果curl上传成功,那需要检查Gradle的发布任务配置,比如是否选错了仓库,或者版本号是否存在隐性重复(比如SNAPSHOT版本的缓存问题)。
检查GitHub Rate Limit
虽然403通常不是限流导致,但可以在GitHub的「Settings」→「Developer settings」→「Personal access tokens」页面查看PAT的请求次数是否超限,不过发布包一般不会触发这个限制,可作为最后确认项。
内容的提问来源于stack exchange,提问作者Tejas

