首页
学习
活动
专区
工具
TVP
发布
社区首页 >问答首页 >如何访问maven.build.timestamp进行资源过滤

如何访问maven.build.timestamp进行资源过滤
EN

Stack Overflow用户
提问于 2012-11-05 16:35:38
回答 4查看 87.6K关注 0票数 118

我使用的是maven 3.0.4,并且希望我的应用程序可以访问构建时间戳。为此,我在.properties文件中放置了一个占位符,并让maven在构建时进行过滤。虽然这对于${project.version}工作得很好,但在过滤时${maven.build.timestamp}不会被替换。

该属性似乎在构建时可用--我可以用它来修改工件名称:

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

那么为什么它不能用于资源过滤呢?更重要的是,我如何让它变得可访问?

EN

回答 4

Stack Overflow用户

回答已采纳

发布于 2012-11-05 17:04:30

我发现了this article,解释说由于bug in maven的原因,构建时间戳不会传播到过滤器。解决方法是将时间戳包装在另一个属性中:

代码语言:javascript
复制
<properties>
   <timestamp>${maven.build.timestamp}</timestamp>
   <maven.build.timestamp.format>yyyy-MM-dd HH:mm</maven.build.timestamp.format>
</properties>

然后,过滤就会像预期的那样工作

代码语言:javascript
复制
buildTimestamp=${timestamp}
票数 236
EN

Stack Overflow用户

发布于 2018-10-23 08:07:15

我可以确认,从Maven3.x开始,{maven.build.timestamp}正在“工作”。显然,他们work arounded了这个问题。不再需要额外的properties解决方法。

但是,要注意你的“过滤”插件(maven-resources- plugin )是最新的。它需要相对较新,所以如果mvn help:effective-pom显示的是旧版本(例如: 2.6),请将其升级到较新的版本,为我修复它,3.x例如:

代码语言:javascript
复制
<plugin>
  <groupId>org.apache.maven.plugins</groupId>
  <artifactId>maven-resources-plugin</artifactId>
  <version>3.1.0</version>
</plugin>

不再需要<properties><timestamp>...解决方法...

在某种程度上,这也澄清了为什么它可以在IntelliJ中工作,而不是在命令行中工作。IntelliJ可能使用他们自己的“修改的/内部的”maven常量,所以它在那里工作,但不是从maven命令行。

另请注意,如果您将过滤资源目录添加到您的pom,您可能还需要“重新添加”默认目录,它会丢失,例如:

代码语言:javascript
复制
  <resource>
    <directory>src/main/resources-filtered</directory> <!-- to get "maven.build.timestamp" into resource properties file -->
    <filtering>true</filtering>
  </resource>
  <resource>
    <directory>src/main/resources</directory> <!-- apparently have to add this is you have the other... -->
  </resource>

注意如果你使用spring boot作为你的父母,你必须使用@maven.build.timestamp@ instead。还要注意,如果您使用的是spring boot,那么有一个文件META-INF/build-info.properties可以选择由spring-boot-maven-plugin创建,您可以对其进行read (spring提供了一个BuildProperties bean以方便阅读)。

票数 18
EN

Stack Overflow用户

发布于 2015-02-06 20:06:55

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

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

在我的例子中,我所做的就是使用这个other post中描述的插件(buildnumber-maven-plugin)。

票数 4
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/13228472

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档