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

通过GitHub Actions部署Maven多模块项目失败求助

解决多模块Maven项目部署GitHub Packages失败问题

问题分析

核心问题是distributionManagement的URL配置错误:父pom中使用${project.artifactId}作为GitHub Packages仓库路径,子模块构建时会将该变量替换为自身的artifactId,导致构件被上传到子模块名称对应的Packages仓库(而非父项目的GitHub仓库)。而Maven验证部署时会去父项目对应的仓库查找,自然找不到已上传的子模块构件,最终触发报错。

修复步骤

1. 修正父pom的distributionManagement配置

将URL中的${project.artifactId}替换为你的GitHub仓库名称(即父模块的artifactId,比如你的GitHub仓库是mathiasbosman/fs-core,则URL固定为该路径):

<distributionManagement>
  <!-- Github distribution -->
  <repository>
    <id>github</id>
    <name>GitHub Packages</name>
    <!-- 替换为你的GitHub仓库路径,不要用${project.artifactId} -->
    <url>https://maven.pkg.github.com/MYUSERNAME/my-artifact</url>
  </repository>
</distributionManagement>

所有子模块会继承父pom的配置,统一上传到父项目对应的GitHub Packages仓库。

2. 完善GitHub Action的Java配置

在setup-java步骤中添加Maven服务器认证配置,确保GITHUB_TOKEN能正确访问GitHub Packages:

- uses: actions/setup-java@v3
  with:
    java-version: 17
    distribution: adopt
    cache: maven
    server-id: github  # 与pom中repository的id对应
    server-password: ${{ secrets.GITHUB_TOKEN }}  # 用GitHub Action内置token做认证

该配置会自动生成Maven settings.xml,将github服务器的认证信息设置为GITHUB_TOKEN,无需手动编写settings文件。

3. 验证release命令

保持原有的release命令不变(你的SCM配置已正确):

mvn -B release:prepare
mvn -B release:perform

额外说明

  • GitHub Packages的Maven仓库与GitHub代码仓库一一绑定,所有子模块构件必须上传到父项目对应的Packages仓库,不能分散到子模块名称的仓库。
  • 你的GITHUB_TOKEN已拥有packages:write权限(在Action的permissions中配置),无需额外申请权限。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.12 16:05:15