【问题标题】:Update Maven project version non-interactively to release version [duplicate]以非交互方式更新 Maven 项目版本以发布版本 [重复]
【发布时间】:2016-11-08 12:57:43
【问题描述】:

我想将我的 Maven 项目的版本更新为与当前快照版本对应的发布版本。例如。 1.2-SNAPSHOT 应该变成 1.2。换句话说,我只想从版本中删除-SNAPSHOT 后缀。我想以非交互方式执行此操作,以便我的 CI 工具可以执行此操作。

我知道这可以通过maven-release-pluginmaven-versions-plugin 以及可能的其他插件来完成。我偏爱maven-versions-plugin,因为它可以很好地处理聚合器项目。

两个插件都会提示输入新版本,但允许您在命令行上提供版本。如何提供相对于当前快照版本的新版本?如前所述,我只想删除 -SNAPSHOT 部分。

所以要清楚:

  • 我只想更新项目的版本,而不是发布插件提供的所有其他内容。
  • 我不想指定版本号,只是将版本更新为“-SNAPSHOT 之前的任何版本”。

【问题讨论】:

    标签: java maven release maven-release-plugin maven-versions-plugin


    【解决方案1】:

    maven-release-plugin 完全按照您的要求执行 - 并且可以在非交互模式下运行以执行以下步骤:

    构建项目

    标记代码

    将更改推送到您的 SCM

    将版本修改为发布版本

    重新构建

    将版本化的 jar/war/ear/zip 推送到您选择的存储库

    标记并推送

    将版本号设置为下一个快照版本

    等等

    全部自动完成。

    【讨论】:

    • 是的,但我想将版本更新为“-SNAPSHOT 之前的任何版本”,而不是在命令行上专门指定版本。
    • 是的,检查答案here,在个人资料中全部自动
    • 这正是非交互模式所做的——如果您的版本是 1.2.3-SNAPSHOT,它将创建一个 1.2.3 版本,而您的下一个版本将是 1.2.4-SNAPSHOT跨度>
    【解决方案2】:

    使用 CI 工具,您应该能够直接在 POM 中编辑标签。

    这是我的一个小项目的sn-p。

    <modelVersion>4.0.0</modelVersion>
    <groupId>com.organization</groupId>
    <artifactId>pdf_tiff_conversion</artifactId>
    <version>1.0-SNAPSHOT</version> // Edit this tag
    <packaging>jar</packaging>
    

    【讨论】:

      【解决方案3】:

      使用versions-maven-plugin:

      mvn org.codehaus.mojo:versions-maven-plugin:2.1:set -DnewVersion=1.2 -DgenerateBackupPoms=false
      

      不幸的是,这迫使您提供版本号 (1.2),它不会删除 -SNAPSHOT,但它是一个比发布插件更简单的解决方案。

      【讨论】:

      • 这确实是目前为止最接近我想要的解决方案。我的问题是关于如何说“更新到 -SNAPSHOT 之前的任何内容。我希望有一些聪明的方法来做到这一点。
      • 我认为 stackoverflow.com/questions/3545292/… 可能有助于检索当前版本,一些 sed 删除 -SNAPSHOT
      • @krzyk 使用versions插件你仍然可以在没有任何交互的情况下删除快照,检查答案here
      猜你喜欢
      • 2016-07-24
      • 1970-01-01
      • 2018-04-28
      • 2012-07-13
      • 1970-01-01
      • 1970-01-01
      • 2015-08-04
      • 2017-10-17
      • 1970-01-01
      相关资源
      最近更新 更多