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

使用GitHub Action递增Maven版本时settings.xml配置问题求助

解决GitHub Action「qcastel/github-actions-maven-release」读取自定义settings.xml的问题

核心思路

该Action会自动生成自身的settings.xml覆盖目标目录,要让Maven使用包含CodeArtifact配置的自定义文件,可通过以下两种可靠方式实现:

方式一:通过maven-args强制指定自定义settings.xml路径

  1. 在你的仓库中创建自定义settings.xml,包含CodeArtifact的仓库与服务器认证配置(示例如下):
<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>your-codeartifact-id</id>
      <username>aws</username>
      <password>${env.CODEARTIFACT_AUTH_TOKEN}</password>
    </server>
  </servers>
  <mirrors>
    <mirror>
      <id>your-codeartifact-id</id>
      <mirrorOf>central</mirrorOf>
      <url>https://xxxx-xxxx.d.codeartifact.ap-south-1.amazonaws.com/maven/prod/</url>
    </mirror>
  </mirrors>
  <profiles>
    <profile>
      <id>codeartifact</id>
      <activation>
        <activeByDefault>true</activeByDefault>
      </activation>
      <repositories>
        <repository>
          <id>your-codeartifact-id</id>
          <url>https://xxxx-xxxx.d.codeartifact.ap-south-1.amazonaws.com/maven/prod/</url>
          <releases>
            <enabled>true</enabled>
          </releases>
          <snapshots>
            <enabled>true</enabled>
          </snapshots>
        </repository>
      </repositories>
    </profile>
  </profiles>
</settings>
  1. 在GitHub Action流程中,先将该文件复制到Runner的可访问路径,再在maven-args中添加-s参数指定自定义文件路径:
- name: 复制自定义settings.xml
    run: cp ./path/to/your/custom-settings.xml /home/runner/custom-settings.xml
  - name: Increment release version
    uses: qcastel/github-actions-maven-release@master
    env:
      JAVA_HOME: /usr/lib/jvm/java-11-openjdk/
      CODEARTIFACT_AUTH_TOKEN: ${{ secrets.CODEARTIFACT_AUTH_TOKEN }}
    with:
      ssh-private-key: ${{ secrets.GIT_ACTION_DEPLOY_SSH_PK }}
      skip-perform: true
      version-patch: true
      release-branch-name: "ET-1027_Package_Versioning"
      maven-args: "-s /home/runner/custom-settings.xml -Dmaven.repo.url=https://xxxx-xxxx.d.codeartifact.ap-south-1.amazonaws.com/maven/prod/"

方式二:替换Action生成的settings.xml

由于Action会在指定的m2-home-folder下生成默认settings.xml,可在Action执行后立刻替换为自定义配置:

- name: Increment release version
    uses: qcastel/github-actions-maven-release@master
    env:
      JAVA_HOME: /usr/lib/jvm/java-11-openjdk/
      CODEARTIFACT_AUTH_TOKEN: ${{ secrets.CODEARTIFACT_AUTH_TOKEN }}
    with:
      ssh-private-key: ${{ secrets.GIT_ACTION_DEPLOY_SSH_PK }}
      skip-perform: true
      version-patch: true
      release-branch-name: "ET-1027_Package_Versioning"
      maven-servers: '[{"id": "xxxxx", "username": "aws", "password": "${{ secrets.CODEARTIFACT_AUTH_TOKEN }}"}]'
      m2-home-folder: '/root/.m2' # 明确指定Action使用root用户的.m2目录
  - name: 替换为自定义settings.xml
    run: cp ./path/to/your/custom-settings.xml /root/.m2/settings.xml
  # 此处可添加后续需要执行的Maven命令(如deploy等)

关键注意事项

  • 确保自定义settings.xml中的服务器id与仓库id完全匹配,Maven会通过id关联认证信息。
  • 不要硬编码CodeArtifact的认证token,用GitHub Secrets存储并通过环境变量引用,避免敏感信息泄露。
  • 若Action运行在root用户环境下,m2-home-folder需设置为/root/.m2,否则Action会默认生成到root目录,导致你的配置不生效。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.28 09:05:35