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

使用GitHub托管Maven包在其他仓库的GitHub Actions工作流中遇到401未授权依赖解析失败问题

GitHub托管Maven包在其他仓库的GitHub Actions工作流中遇到401未授权依赖解析失败问题

看起来你遇到的是GitHub Actions环境下访问GitHub Packages时的权限授权问题,我来帮你梳理几个关键的排查和解决方向:

1. 检查默认GITHUB_TOKEN的权限范围

默认的GITHUB_TOKEN作用域仅限于当前运行工作流的仓库,如果你的yf-project和yf-models-proto是和fintestq不同的独立仓库(哪怕是同一个账号下的),默认token没有跨仓库读取Packages的权限,这是最常见的导致401的原因。

解决步骤:

  • 打开fintestq仓库的 Settings > Actions > General > Workflow permissions
  • 选择 Read and write permissions(或者更细粒度的话,确保勾选了packages:read权限)
  • 保存后重新运行工作流,看是否能正常拉取依赖

2. 确认Maven配置的一致性

虽然你的配置看起来id是匹配的,但还是要仔细核对:

  • 确保pom.xml中<repository>的<id>和maven-settings-action中配置的serverid完全一致(包括大小写、拼写)
  • 检查你传入的JSON格式是否正确,比如引号、逗号有没有遗漏,避免生成的settings.xml出现格式错误

可以修改workflow中的调试步骤,完整输出settings.xml内容,确认配置正确:

- name: Show full Maven settings (debug)
  run: cat ~/.m2/settings.xml

3. 尝试使用个人访问令牌(PAT)替代默认GITHUB_TOKEN

如果默认token的权限还是无法满足跨仓库访问需求,可以创建一个PAT:

  1. 前往GitHub的 Settings > Developer settings > Personal access tokens > Tokens (classic)
  2. 生成一个新的PAT,赋予它packages:read和repo权限(如果你的包在私有仓库)
  3. 在fintestq仓库的 Settings > Secrets and variables > Actions 中添加这个PAT为新的Secret,比如命名为GH_PACKAGES_TOKEN
  4. 修改workflow中的maven-settings-action配置,替换为这个PAT:
- uses: s4u/maven-settings-action@v2
  with:
    servers: |
      [
        {
          "id": "github-yf-project",
          "username": "${{ github.actor }}",
          "password": "${{ secrets.GH_PACKAGES_TOKEN }}"
        },
        {
          "id": "github-yf-models-proto",
          "username": "${{ github.actor }}",
          "password": "${{ secrets.GH_PACKAGES_TOKEN }}"
        }
      ]

4. 检查Packages的可见性和访问权限

  • 打开yf-project和yf-models-proto仓库的Packages页面,查看对应包的可见性:
    • 如果是私有包:确认生成token的用户(不管是默认GITHUB_TOKEN对应的GitHub Actions用户,还是PAT对应的个人用户)拥有该包的读取权限(比如是仓库所有者、协作者,或者被添加到包的访问列表中)
    • 如果是公共包:确保公共包的访问不需要额外授权,或者确认token的权限足够

5. 启用Maven调试日志定位细节

在workflow的Build步骤中添加-X参数,获取更详细的依赖解析日志,能看到Maven请求包时的授权头、请求URL等关键信息,帮助精准定位问题:

- name: Build with debug logs
  run: ./mvnw verify -B -X

6. 清理本地缓存的影响(可选)

虽然你已经加了清理Maven缓存的步骤,但可以尝试在workflow中添加一步,确认缓存不会干扰:

- name: Clean Maven repository
  run: ./mvnw clean install -U

-U参数会强制更新快照依赖,同时重新拉取所有依赖的元数据。

内容来源于stack exchange

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.04.08 03:10:51