【发布时间】: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
【问题讨论】:
-
正常构建life-cycle bindings 不能用于发布吗?
标签: java maven-2 maven-release-plugin