我想在文本文件中编写POM版本和时间戳。
因此,我在src/main/resources/version
文件夹中创建了一个属性文件:
product.version = ${project.version}
并添加到我的pom.xml
:
<resource>
<directory>${basedir}/src/main/resources/version</directory>
<filtering>true</filtering>
</resource>
我的输出文本文件说:
Version = ${project.version}
Timestamp = 277466182879304
我做错了什么?
答案 0 :(得分:0)
该变量名为${project.version}
,而不是${pom.version}
[编辑] 可以将旧版本的m2e插件配置为在Eclipse构建项目时不运行Eclipse的资源复制目标。这意味着对于从Eclipse启动的单元测试和main()
方法,资源将不会更新,您将看到一些旧值。
还要确保从命令行运行Maven时强制完全重建项目;否则,Eclipse会被混淆,你会得到奇怪的错误。
如果遇到这样的问题,首先从命令行运行Maven,看看它是Maven还是m2e(配置)问题。
下一步是使用Run as.../Maven install
从Eclipse中运行Maven。这将使用Maven构建项目,而不使用m2e快捷方式。
如果这些工作,那就是m2e的效果,它试图削减一些角落以保持Eclipse的响应性。确保您拥有m2e(1.2.0)的最新版本。它应该解决这个问题。如果仍然无效,请提交错误报告。
这对我有用:version.properties
包含
version=${project.version}
timestamp=${build.time}
由于Maven 3.x中存在错误,我必须使用插件来获取正确的构建时间戳:
<plugin>
<groupId>com.keyboardsamurais.maven</groupId>
<artifactId>maven-timestamp-plugin</artifactId>
<configuration>
<propertyName>build.time</propertyName>
<timestampPattern>yyyy.MM.dd HH:mm:ss</timestampPattern>
</configuration>
<executions>
<execution>
<goals>
<goal>create</goal>
</goals>
</execution>
</executions>
</plugin>