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

Maven项目GitHub Actions构建遇401未授权错误,求解决方案

解决GitHub Actions中Maven拉取GitHub Packages私有包的401认证问题

遇到这个401错误是因为GitHub Actions环境里没有配置访问GitHub私有包的认证信息,本地的.m2/settings.xml配置没法直接复用,得在工作流里补上认证配置,下面是两种可行的解决方法:

1. 准备GitHub访问令牌

首先得生成一个带read:packages权限的Personal Access Token(PAT),这个权限足够拉取私有包了。生成后把它存到你的GitHub仓库Secrets里,命名为GITHUB_PACKAGES_TOKEN(名字可以自己定,后面要对应上)。

2. 配置工作流里的Maven认证

方法一:用setup-java自动配置(推荐)

直接修改工作流里的JDK配置步骤,加上服务器认证参数,setup-java会自动帮你生成对应的Maven settings配置:

- name: Set up JDK 11
  uses: actions/setup-java@v3
  with:
    java-version: '11'
    distribution: 'temurin'
    cache: maven
    server-id: github # 这个ID要和你pom.xml里仓库的ID一致
    server-password: ${{ secrets.GITHUB_PACKAGES_TOKEN }} # 引用刚才存的Secret

同时确认你的pom.xml里已经配置了GitHub Packages仓库,并且ID和上面的server-id匹配:

<repositories>
  <repository>
    <id>github</id>
    <name>GitHub Packages</name>
    <url>https://maven.pkg.github.com/你的GitHub用户名/私有包仓库名</url>
  </repository>
</repositories>

方法二:手动生成settings.xml

如果需要更灵活的配置,可以在工作流里手动创建.m2/settings.xml文件:

- name: 配置Maven settings
  run: |
    mkdir -p ~/.m2
    cat > ~/.m2/settings.xml << EOF
    <settings>
      <servers>
        <server>
          <id>github</id>
          <username>你的GitHub用户名</username>
          <password>${{ secrets.GITHUB_PACKAGES_TOKEN }}</password>
        </server>
      </servers>
    </settings>
    EOF

这样Maven执行命令时会自动读取这个配置文件,不需要额外加参数。

完整工作流示例

name: Java CI with Maven

on:
  push:
    branches: [ "master" ]
  pull_request:
    branches: [ "master" ]

jobs:
  build:
    runs-on: ubuntu-latest
    steps:
    - uses: actions/checkout@v3
    - name: Set up JDK 11
      uses: actions/setup-java@v3
      with:
        java-version: '11'
        distribution: 'temurin'
        cache: maven
        server-id: github
        server-password: ${{ secrets.GITHUB_PACKAGES_TOKEN }}
    - name: Build with Maven
      run: mvn -B package --file pom.xml

注意事项

  • PAT只需要read:packages权限,别给多余权限,避免安全风险
  • 仓库Secrets的名字要和工作流里引用的完全一致
  • pom.xml里的仓库ID必须和settings配置里的server ID对应,否则认证不生效

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.10 10:40:27