maven 替換指定文件屬性值
問題由來
接到一個需求:組裝 http 協議的時候在 header 裏面帶上 User-agent , 但是 agent 裏面需要動態獲取當前操作系統、系統架構、當前項目版本和名稱。本着最少維護成本的想法,否定了手動維護靜態變量的選擇,所以只能選擇通過現有的技術自動化解決問題。
實現步驟
-
在項目的 resources 目錄下創建 xx.properties 文件(也可以在自己喜歡的目錄創建,不過稍後讀取的時候會比較麻煩,所以建議是在 resources 下面創建),填寫以下信息
project.version=${project.version} project.name=${project.name}
看名字就知道他們是什麼意思了就不解釋了
-
在 pom 文件的 build 標籤裏填入相應信息
<build> <resources> <resource> <directory>src/main/resources</directory> <includes> <include>xx.properties</include> </includes> <filtering>true</filtering> </resource> </resources> </build>
directory:指定需要替換的文件目錄
include:指定需要替換的文件(可以使用*.*來通配)
filtering:true 開啓替換 -
最後就是在代碼裏面讀取配置
Properties props = System.getProperties(); props.load(ClassLoader.getSystemResourceAsStream("xx.properties")); String name = props.getProperty("project.name"); String version = props.getProperty("project.version")