【问题标题】:Maven release create tag based on versionMaven 发布基于版本创建标签
【发布时间】:2012-08-13 19:41:08
【问题描述】:

使用 maven release:prepare 简化了部署工件的过程。可以使用tag 标签定义标签。该插件允许使用属性来构建自定义标签名。

但我需要一个更自定义的版本,它在版本中使用“_”代替点作为分隔符。例如版本: 1.0.1.2 => 标记名应该是 01_01_01 。

如果我可以访问 ${project.version} 的主要版本、次要版本,这也是一个解决方案。不过好像一般都没有。

build-helper plugin seems to be no solution since I call release:prepare and therefore any settings by this plugins will be lost

任何想法如何以简单的方式实现这一目标?

【问题讨论】:

  • 首先你为什么需要它?为什么不使用默认值。提取信息版本信息可以通过内部版本号插件提取。
  • @khmarbaise 他的问题是他想控制 release:prepare 标记他的 SCM 的标签名称,而 maven.apache.org/plugins/maven-release-plugin/… 对他来说不够灵活

标签: maven release


【解决方案1】:

简单的方法是始终像这样运行 maven

mvn validate release:prepare

当然,如果您忘记在发布之前调用validate:准备您的发布将被破坏......所以这不好。

下一个改进是拥有一个带有 defaultGoals 的配置文件

<profile>
  <id>prepare-release</id>
  <build>
    <defaultGoal>validate release:prepare</defaultGoal>
  </build>
</profile>

然后你通过做非标准

来发布
mvn -Pprepare-release

真正的解决方法是向 maven 发布插件建议一个补丁,以允许在 tagNameFormat 配置参数中替换正则表达式。

【讨论】:

  • 谢谢。这对我有用。 (使用 building-helper 插件做一些疯狂的事情,但如果这是 maven 方式...... ;-))
【解决方案2】:

使用 Maven-Release Plugin,你可以指定你想要的标签格式。 Maven 发布插件运行 2 个目标: 发布:准备和发布:执行。

在这里,您的根 pom 中有必要的目标: http://maven.apache.org/maven-release/maven-release-plugin/usage.html

如果你使用 Jenkins 工具,你可以使用 Maven Release Plugin 来运行它, 或者只是手动运行它 mvn release:prepare 和 mvn release:perform

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2016-06-18
    • 2011-04-03
    • 2018-02-21
    • 1970-01-01
    • 1970-01-01
    • 2012-03-14
    • 2013-06-02
    相关资源
    最近更新 更多