使用属性文件编写POM版本

时间:2012-12-20 12:57:52

标签: java xml maven pom.xml

我想在文本文件中编写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

我做错了什么?

1 个答案:

答案 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>