使用 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