将Maven包发布至GitHub Packages时遇422错误求助
解决Maven构件发布至GitHub Packages的422 Unprocessable Entity错误
以下是针对你遇到的问题的排查和解决方案:
1. 检查构件版本是否已存在
GitHub Packages不允许重复发布同一版本的构件,这是422错误最常见的原因:
- 进入你的GitHub仓库
MilanDierick/SongsOfSyx,点击右侧Packages选项卡 - 删除已存在的
github.gsos:UnofficalSongsOfSyx:0.63.45构件 - 重新运行工作流,或修改pom.xml中的版本号(例如改为
0.63.45-SNAPSHOT或0.63.46)后再部署
2. 升级Maven Deploy插件版本
你当前使用的maven-deploy-plugin:2.7版本较旧,可能与GitHub Packages的API不兼容。在pom.xml中指定更高版本的插件:
<build> <plugins> <plugin> <groupId>org.apache.maven.plugins</groupId> <artifactId>maven-deploy-plugin</artifactId> <version>3.1.1</version> </plugin> </plugins> </build>
3. 完善JDK配置的认证参数
修改工作流中的Set up JDK步骤,添加server-password参数,让setup-java自动生成包含正确认证信息的settings.xml:
- name: Set up JDK 8 uses: actions/setup-java@v3 with: java-version: '8' distribution: 'corretto' cache: maven server-id: github server-password: ${{ secrets.GITHUB_TOKEN }} settings-path: ${{ github.workspace }}
4. 规范groupId命名(可选)
虽然不是强制要求,但建议使用更符合Maven规范的groupId格式(例如com.github.MilanDierick),避免潜在的路径解析问题:
<groupId>com.github.MilanDierick</groupId> <artifactId>UnofficalSongsOfSyx</artifactId>
5. 手动生成settings.xml(兜底方案)
如果上述方法无效,直接在工作流中生成包含完整配置的settings.xml:
- name: Create Maven settings.xml run: | cat > $GITHUB_WORKSPACE/settings.xml << EOF <settings xmlns="http://maven.apache.org/SETTINGS/1.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://maven.apache.org/SETTINGS/1.0.0 http://maven.apache.org/xsd/settings-1.0.0.xsd"> <servers> <server> <id>github</id> <username>${{ github.actor }}</username> <password>${{ secrets.GITHUB_TOKEN }}</password> </server> </servers> </settings> EOF
内容的提问来源于stack exchange,提问作者Milan Dierick
相关产品推荐
相关产品推荐

