使用 mavens 屬性過濾機制來保持屬性檔案同步

正如本文件所述

有時,資原始檔需要包含只能在構建時提供的值。要在 Maven 中完成此操作,請使用語法 ${<property name>} 將包含值的屬性引用到資原始檔中。屬性可以是 pom.xml 中定義的值之一,使用者 settings.xml 中定義的值,外部屬性檔案中定義的屬性或系統屬性。

舉個例子,讓我們在 src/main/resources 中建立一個包含 pom 版本和構建時間的簡單 info.txt

  1. 建立一個包含以下內容的 src/main/resources/info.txt

    version = $ {pom.version} build.date = $ {timestamp}

  2. 通過將 filtering 設定為 true,讓 Maven 擴充套件屬性:

     <build>
         <resources>
             <resource>
                <directory>src/main/resources</directory>
                <filtering>true</filtering>
             </resource>
         </resources>
     </build>
    
  3. 有了這個,版本將會更新,但不幸的是,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>
    
  4. 執行 maven,你應該在 target/classes 找到一個 info.txt,內容如下:

     version=0.3.2
     build.date=2017-04-20T13:56