【问题标题】:Specifying the Date in the tag generated by the maven-release-plugin在 maven-release-plugin 生成的标签中指定日期
【发布时间】:2012-02-11 09:35:43
【问题描述】:

在我们的项目中,我们以以下格式声明我们的 SVN 标签:

YYYY-MM-DD - v{project.version} [${environment}]

例如 2012-01-16 - v1.0.1 [直播]

是否可以使用 maven-release 插件(版本 2.2.2)来实现这一点?

值得指出的是,版本和环境部分是获取并与发布插件一起使用的。纯粹是无法检索的时间戳。

这是我期望的工作:

<plugin>
    <groupId>org.apache.maven.plugins</groupId>
    <artifactId>maven-release-plugin</artifactId>
    <version>2.2.2</version>
    <configuration>
        <preparationGoals>clean verify</preparationGoals>
        <tagNameFormat>${timestamp} - v@{project.version} [${env}]</tagNameFormat>
        <checkModificationExcludes>
          .
          .
          .    
        </checkModificationExcludes>
    </configuration>
</plugin>

timestamp 属性是使用 buildnumber-maven-plugin 成功生成的,因为它被添加到清单文件以包含到 war 文件中。

我尝试将 buildnumber:create 目标添加到准备目标中,但在执行 release:prepare 时会产生以下输出

什么是“项目名称”的 SCM 发布标签或标签? (a.b.c.d) null - v1.0.1 [LIVE]: :

问题似乎是在设置标记名时未生成时间戳属性,这表明在要求标记名的阶段未执行准备目标。

以下可能会起作用(午餐后会测试它)虽然我宁愿只是调用 release:prepare

mvn buildnumber:create release:prepare

欢迎提出任何意见。

干杯


编辑

我已经使用 buildnumber:create release:prepare 进行了测试,它确实按预期工作,尽管我确实必须进行进一步的修改,老实说有点痛苦。

TagNameFormat 当前包含:

YYYY-MM-DD - v{project.version} [${environment}]

这包含空格和方括号,在使用这种格式执行时,您将收到一个错误,表明 URL 未正确 URI 编码。要解决这个问题,您必须以已经 URI 编码的格式指定 tagNameFormat,例如:

<plugin>
    <groupId>org.apache.maven.plugins</groupId>
    <artifactId>maven-release-plugin</artifactId>
    <version>2.2.2</version>
    <configuration>
        <preparationGoals>clean verify</preparationGoals>
        <tagNameFormat>${timestamp}%20-%20v@{project.version}%20%5B${env}%5D</tagNameFormat>
        <checkModificationExcludes>
          .
          .
          .    
        </checkModificationExcludes>
    </configuration>
</plugin>

这很讨厌,但它确实有效,它会根据需要创建标签。

仍然有兴趣看看是否有人对如何通过执行来获取 tagNameFormat 中的时间戳有任何建议:

mvn 发布:准备

而不是

mvn buildnumber:create release:prepare

【问题讨论】:

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


【解决方案1】:

从 Maven 2.1 开始,有一个变量:maven.build.timestamp 可用,可以使用属性进行配置:

<properties>
  <maven.build.timestamp.format>yyyyMMdd-HHmm</maven.build.timestamp.format>
</properties>

见:http://maven.apache.org/guides/introduction/introduction-to-the-pom.html#Available_Variables

这可能会使 buildnumber 插件不再需要并且应该更易于使用。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2013-12-11
    • 2016-02-13
    • 2019-01-06
    • 2012-02-02
    • 2011-02-22
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多