使用 mavens 属性过滤机制来保持属性文件同步
正如本文档所述 ,
有时,资源文件需要包含只能在构建时提供的值。要在 Maven 中完成此操作,请使用语法
${<property name>}
将包含值的属性引用到资源文件中。属性可以是pom.xml
中定义的值之一,用户settings.xml
中定义的值,外部属性文件中定义的属性或系统属性。
举个例子,让我们在 src/main/resources
中创建一个包含 pom 版本和构建时间的简单 info.txt
。
-
创建一个包含以下内容的
src/main/resources/info.txt
:version = $ {pom.version} build.date = $ {timestamp}
-
通过将
filtering
设置为 true,让 Maven 扩展属性:<build> <resources> <resource> <directory>src/main/resources</directory> <filtering>true</filtering> </resource> </resources> </build>
-
有了这个,版本将会更新,但不幸的是,Maven 中的一个错误会阻止
${maven.build.timestamp}
属性传递给资源过滤机制( 此处有更多信息 )。那么,让我们创建一个timestamp
属性作为解决方法! 将以下内容添加到 pom 的属性中:<properties> <timestamp>${maven.build.timestamp}</timestamp> <maven.build.timestamp.format>yyyy-MM-dd'T'HH:mm</maven.build.timestamp.format> </properties>
-
运行 maven,你应该在
target/classes
找到一个info.txt
,内容如下:version=0.3.2 build.date=2017-04-20T13:56