maven 打包時間戳問題
阿新 • • 發佈:2020-01-11
maven 打包時,可以生成時間戳屬性,利用該屬性來組裝包名。
<version>5.0.${build.time}B</version> <properties> <maven.build.timestamp.format>yyyyMMddHHmmss</maven.build.timestamp.format> </properties>
對資原始檔開啟 filtering 功能,資原始檔中的 POM 變數在打包過程中會被自動替換。在 java 程式碼中訪問 properties 資原始檔,就可以取到版本號。
<resource> <directory>src/main/resources</directory> <filtering>true</filtering> </resource>
但是,這個時間戳屬性有個問題,生成的時間 ${maven.build.timestamp} 是 UTC 時間,無法修改時區。網上找到一個辦法,可以用外掛解決這個問題。
<plugin> <groupId>org.codehaus.mojo</groupId> <artifactId>build-helper-maven-plugin</artifactId> <version>1.8</version> <executions> <execution> <id>timestamp-property</id> <goals> <goal>timestamp-property</goal> </goals> <configuration> <name>build.time</name> <pattern>yyyyMMdd'.'HHmm</pattern> <timeZone>GMT+8</timeZone> </configuration> </execution> </executions> </plugin>
該外掛生成的屬性 ${build.time} 已經是本地時區。
但是,在 IDEA 中, Build Projects ,再 Build Artifacts... ,屬性檔案中的 ${project.version} 並沒有被替換。
摸索了一陣,發現 IDEA Build Projects 並不會呼叫 maven 生命週期,導致 plugin 不被執行。雖然 maven 自帶變數可以被替換,但是自定義變數卻不會被替換。
使用工具按鈕的 maven install 打包,資源中的變數可以被正常替換。
還有一個方法,可以將 IDEA 的 Build 與 maven goal 繫結起來:
圖1 繫結 maven goal
以上就是本文的全部內容,希望對大家的學習有所幫助,也希望大家多多支援我們。