我有一个Maven2项目,我需要在属性文件中添加当前版本和当前日期.
对于当前版本,我已经使用过${project.version}
,它可以正常工作.
我的问题是如何在我的属性文件中设置当前日期(即Maven2完成构建的日期):
client.version=Version ${project.version} client.build=???
(另外,如果我可以指定日期的格式,那将非常棒)
功能不适用于maven 2.2.1资源过滤.
请参阅:https://issues.apache.org/jira/browse/MRESOURCES-99
但您可以在父pom中创建自定义属性:
yyMMdd_HHmm ${maven.build.timestamp}
其中buildNumber是可以过滤到资源的新属性.
您可以使用Maven Buildnumber插件:
org.codehaus.mojo buildnumber-maven-plugin initialize create false false {0,date,yyyy-MM-dd HH:mm:ss}
然后可以在属性$ {buildNumber}中找到该日期.
从Maven 2.1 M1开始,您现在可以${maven.build.timestamp}
为您提供定义${maven.build.timestamp.format}
... yyyyMMdd-HHmm ...
Thomas Marti的答案是向正确的方向迈出的一步,但是有一种更简单的方法,不需要
在POM中进行虚拟声明.使用buildnumber-maven-plugin
,但使用create-timestamp
目标.文件不清楚; 这是在YYYY-MM-DD
格式中获取日期并将其放入build.date
属性中的样子:
org.codehaus.mojo buildnumber-maven-plugin 1.2 validate create-timestamp yyyy-MM-dd build.date
开箱即用,这在使用m2e的Eclipse中不起作用,因此您必须在POM
部分中添加以下内容:
org.eclipse.m2e lifecycle-mapping 1.0.0 org.codehaus.mojo buildnumber-maven-plugin [1.2,) create-timestamp true true
这告诉m2e你希望它在Eclipse中构建时继续运行插件.
现在,当您在Eclipse内部或外部构建时,正确生成时间戳并使用资源过滤!
令人遗憾的是,功能如此简单必须如此艰难......
另一个解决方案是在pom.xml中使用Groovy(可能不像Thomas Marti提出的解决方案那样合适):
src/main/resources true org.codehaus.groovy.maven gmaven-plugin validate execute
然后使用该buildtimestamp
属性:
client.version=${pom.version} client.build=${buildtimestamp}
这对我有用.我想要的只是时间戳.
在pom ...
... yyyyMMdd-HHmm ${maven.build.timestamp} mystuff mystuff.web true
并在JSP文件中......
Built: ${dev.build.timestamp}
示例结果是......
Built: 20130419-0835
粘贴${build.time}
在属性文件和以下内容中pom.xml
:
org.codehaus.mojo buildnumber-maven-plugin 1.3 yyyy-MM-dd HH:mm:ss build.time initialize create-timestamp
另请参阅buildnumber-maven-plugin文档.
(其他答案让我特别关注Garret Wilson,但他的日食配置对我来说不是必需的,这让我忽略了他的答案,所以我发布了对我有用的东西.)
如果你想获得一个日期和一个时间的两个属性作为奖励,这就是你如何做到这一点:
org.codehaus.mojo buildnumber-maven-plugin 1.3 build.date initialize create-timestamp yyyy-MM-dd build.date build.time initialize create-timestamp yyyy-MM-dd HH:mm:ss build.time
它在maven 2.1.0对我有用
$ {} maven.build.timestamp