您好,登錄后才能下訂單哦!
這篇文章主要介紹了SpringBoot如何獲得Maven-pom中版本號和編譯時間戳,具有一定借鑒價值,感興趣的朋友可以參考下,希望大家閱讀完這篇文章之后大有收獲,下面讓小編帶著大家一起了解一下。
SpringBoot項目獲得編譯時間戳和版本號,然后提供接口大概分為以下步驟:
在pom文件中獲取maven的編譯時間戳
配置pom,用maven中的屬性渲染資源文件application.yml
提供接口
Maven中獲得編譯時間
在 pom文件properties 中添加兩個屬性
<properties> <!--maven.build.timestamp保存了maven編譯時間戳--> <timestamp>${maven.build.timestamp}</timestamp> <!--指定時間格式--> <maven.build.timestamp.format>yyyy-MM-dd HH:mm:ss</maven.build.timestamp.format> </properties>
用Maven屬性渲染application.yml
在pom文件build中配置
<build> <resources> <resource> <directory>src/main/resources</directory> <filtering>true</filtering> </resource> </resources> </build>
在application.yml中配置
不能使用${}
app: version: @project.version@ build: time: @timestamp@
提供接口
創建AppController,提供接口 Get /app
package cn.yshow.modules.sys.controller; import cn.yshow.common.utils.restResult.RestResult; import cn.yshow.common.utils.restResult.ResultGenerator; import lombok.extern.slf4j.Slf4j; import org.springframework.beans.factory.annotation.Value; import org.springframework.web.bind.annotation.GetMapping; import org.springframework.web.bind.annotation.RequestMapping; import org.springframework.web.bind.annotation.RestController; import java.util.HashMap; import java.util.Map; /** * @author zhaod zhaodongxx@outlook.com * @version v1.0 * @since 2018/12/16 16:19 */ @Slf4j @RestController @RequestMapping("/app") public class AppController { /** * 當前版本 */ @Value("${app.version}") private String version; /** * 打包時間 */ @Value("${app.build.time}") private String buildTime; @GetMapping public RestResult uploadImg() { Map<String,String> ret = new HashMap<>(); ret.put("version",version); ret.put("buildTime",buildTime); //RestResult是我封裝的返回對象 return ResultGenerator.genSuccessResult(ret); } }
測試
用YAPI測試如下
maven.build.timestamp時區錯誤解決方案
在Maven 3.2.2+中, maven.build.timestamp已被重新定義,顯示UTC中的時間,比中國時間慢8個小時。可以使用插件build-helper-maven-plugin獲得本時區的時間
在plugins塊添加插件,這個配置與官網不一樣,按照官網的配置方式會報錯
<project> <build> <!--指定包名 --> <finalName> ${project.artifactId}-${project.version}-${build.time} </finalName> <plugins> <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> </execution> </executions> <configuration> <name>build.time</name> <pattern>yyyy-MM-dd HH:mm</pattern> <timeZone>GMT+8</timeZone> </configuration> </plugin> </plugins> </build> </project>
經過上述處理后,屬性${build.time}已經代表GMT-8時區的時間
application.yml配置如下
app: version: @project.version@ build: time: @build.time@
IDEA 編譯項目不會調用 maven 生命周期,導致安裝的 plugin 不被執行。雖然 maven 自帶變量可以被替換,但是自定義變量卻不會被替換。
可以將 IDEA 的 Build 與 maven goal 綁定起來,在 build 之前執行 maven goal,IDEA 右側 Maven Projects -> LifeCycle -> compile 勾選 Execute After Build和Execute After Rebuild ,如下圖
把時間戳加到包名
兩種方法不要重復,否則
方法一:把時間戳加到版本號
<project> <versioin> 0.0.5.${build.time} </version> </project>
方法二:把時間戳直接加到包名
<project> <build> <finalName> ${project.artifactId}-${project.version}-${build.time} </finalName> </build> </project>
感謝你能夠認真閱讀完這篇文章,希望小編分享的“SpringBoot如何獲得Maven-pom中版本號和編譯時間戳”這篇文章對大家有幫助,同時也希望大家多多支持億速云,關注億速云行業資訊頻道,更多相關知識等著你來學習!
免責聲明:本站發布的內容(圖片、視頻和文字)以原創、轉載和分享為主,文章觀點不代表本網站立場,如果涉及侵權請聯系站長郵箱:is@yisu.com進行舉報,并提供相關證據,一經查實,將立刻刪除涉嫌侵權內容。