如何访问资源过滤的maven.build.timestamp

我正在使用maven 3.0.4,并希望使我的应用程序可以访问生成时间戳。 为此,我在.properties文件中放置一个占位符,并让mavenfilter构build。 虽然这对${project.version}正常工作,但${maven.build.timestamp}在过滤时不会被replace。

该属性似乎在构build上可用 – 我可以使用它来修改工件名称:

<finalName>${project.artifactId}-${maven.build.timestamp}</finalName>

那么为什么它不可用于资源过滤? 而且,更重要的是,我该如何使其可以访问?

我发现了这篇文章 ,解释了由于maven中的一个bug ,构build时间戳不会被传播到filter。 解决方法是将时间戳包装在另一个属性中:

 <properties> <timestamp>${maven.build.timestamp}</timestamp> <maven.build.timestamp.format>yyyy-MM-dd HH:mm</maven.build.timestamp.format> </properties> 

然后过滤按预期工作

 buildTimestamp=${timestamp} 

为了丰富别人的Stackoverflow内容,就像我一样,发现这个post是一种解决${maven.build.timestamp}的“问题”的方法。 这不是一个maven bug,而是一个m2e的预期行为,在这篇文章中可以看到。

因此,我相信我们不能期望解决scheme能够“纠正”,因为据我所知,纠正涉及到概念问题。

在我的情况下,我所做的就是使用插件( buildnumber-maven-plugin ),如其他文章中所述 。