git - 是否有自动增加 Maven 版本的好方法

标签 git maven continuous-integration

我已经这样做了一段时间,这是当前的情况:

  • 我有一个开发分支,在每次推送后,我想将我当前的 maven 库发布为 SNAPSHOT。我目前通过使用 exec-plugin 和 echo 来检索我的 maven 版本(例如:-Dexec.executable=echo -Dexec.args='${project.version}' org.codehaus.mojo:exec-maven-plugin: 1.6.0:执行))
  • 然后我使用 update-versions 命令将“-SNAPSHOT”注入(inject)并发布(我不将其发布回分支,因为我真的不想保留“-SNAPSHOT”)。

  • 对于发布,我想我可以在检索版本的地方做类似的事情,然后想办法增加它 -> 发布回当前事件的分支 -> 最后进行部署。现在,我采用了一种稍微容易一些但容易出错的方法:我尝试获取我们使用的 Artifact 中设置的当前版本,如果它存在,我会通过一条消息指出该版本已经存在而使管道失败。现在不是很好,因为我实际上在这里反转了一个错误条件,所以如果 maven 由于任何其他原因失败,它实际上假设该版本不存在并继续进行下一步。啊。
    现在,我在这里寻找的 Gist 实际上是处理 maven 项目和版本控制的最佳方法。理想情况下,我的目标是:
  • 能够以 SNAPSHOT 的形式正确发布一些东西(也许不必求助于 maven-exec)?
  • 能够逐步更新我的版本,因此用户不必经常更新他们的版本?当然,这个过程必须确保我不会将可能有错误版本的东西推送到 master(然后在部署时会失败)。编辑:换种说法,这里的意图不仅仅是将版本增加到“下一个”,而是“下一个可用的”,确保我不会尝试 merge 以前发布的版本。

  • 我确实有一个限制:我们使用的工具不允许我们使用 merge Hook (Azure DevOps 和 Azure Git)。这意味着我们仅限于 pull (和 PR)以及 PR merge 后的管道。
    我很高兴在这里实际采取任何其他方法,我觉得我正在竭尽全力做出一些现在应该有明确路径的东西,所以我希望有人在这里提供一些指导。

    最佳答案

    @davidxxx 答案的补充。
    build-helper maven 插件的使用可以改善:

    mvn build-helper:parse-version versions:set \
        -DnewVersion=\${parsedVersion.nextMajorVersion}.0.0 \
        versions:commit
    
    或像这样:
    mvn build-helper:parse-version versions:set \
       - DnewVersion=\${parsedVersion.majorVersion}.\${parsedVersion.nextMinorVersion}.0 \
       versions:commit
    
    没有任何 sed 等更多细节:
  • https://www.mojohaus.org/build-helper-maven-plugin/parse-version-mojo.html
  • 关于git - 是否有自动增加 Maven 版本的好方法,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/62849887/

    相关文章:

    git - 撤消推送到文件的更改

    java - 为什么系统每次在新的工作空间中都会从 Maven 下载 Google App Engine Java SDK?

    GitHub 工作流程 : Should each developer have their own fork?

    java - Maven 在 jenkins 上使用错误的 JDK 构建

    maven - 在 Maven Cucumber Reports 中构建失败时不会生成报告

    android - Travis CI 和 CodeCov Android

    node.js - 保留 Cordova 平台文件夹以加快 CI 构建速度

    javascript - Javascript 项目的 CIS

    git - 从 Git 远程 pull 时使用远程更改解决冲突

    git - 无法安装git flow