【问题标题】:How to automate versioning of Maven project in GitHub?如何在 GitHub 中自动化 Maven 项目的版本控制?
【发布时间】:2020-03-11 18:02:36
【问题描述】:

我正在尝试将自动或半自动版本控制为 GitHub

我研究了自动化发布工作流的可能性,它似乎不是 GitHub 的任何标准。

每当我在GitHub 上创建标签或合并到master 分支时,我都希望自动更新pom.xml 中的版本。

【问题讨论】:

  • 至少有两种方法:第一种通过 maven-release-plugin 或通过CI Friendly way
  • @khmarbaise 我是否正确理解插件控制ci 但并自动生成标签而不是bump ${project.version}?也可以根据这个创建发布标签来提升项目的版本。
  • 版本是通过命令行属性动态给出的。它不再是您的 pom 文件的一部分...必须手动或外部脚本完成标记。如果你想在你的 pom 文件中包含这个版本,你可以通过 maven-release-plugin 来实现,包括标记等。

标签: maven github workflow release versioning


【解决方案1】:

我找到了一个可以进一步扩展的 Github Actions 解决方案。每当我发布并手动指定发布说明和变更日志时,此发布版本可以取自 github.event.release.tag_name

mvn -B versions:set -DnewVersion=${{ github.event.release.tag_name }} -DgenerateBackupPoms=false

实际 GitHub 工作流程的参考是here

.github/workflows/deploy.yml 在撰写本文时:

name: Publish package to the Maven Central Repository
on:
  release:
    types: [created]

jobs:
  publish:
    runs-on: ubuntu-latest
    steps:
      - name: Check out Git repository
        uses: actions/checkout@v2
      - name: Install Java and Maven
        uses: actions/setup-java@v1
        with:
          java-version: 8
      - if: github.event.release
        name: Update version in pom.xml (Release only)
        run: mvn -B versions:set -DnewVersion=${{ github.event.release.tag_name }} -DgenerateBackupPoms=false
      - name: Release Maven package
        uses: samuelmeuli/action-maven-publish@v1.4.0
        with:
          maven_profiles: deploy, verify
          gpg_private_key: ${{ secrets.GPG_PRIVATE_KEY }}
          gpg_passphrase: ${{ secrets.GPG_PASSPHRASE }}
          nexus_username: ${{ secrets.OSSRH_USERNAME }}
          nexus_password: ${{ secrets.OSSRH_TOKEN }}

【讨论】:

    猜你喜欢
    • 2023-03-30
    • 1970-01-01
    • 2023-02-11
    • 2022-12-19
    • 1970-01-01
    • 1970-01-01
    • 2020-10-26
    • 1970-01-01
    • 2019-04-11
    相关资源
    最近更新 更多