詳解SpringBoot獲得Maven-pom中版本號(hào)和編譯時(shí)間戳
這篇文章首先介紹了在SpringBoot中如何獲得項(xiàng)目的編譯時(shí)間和版本號(hào),并向外提供接口,然后介紹了介紹了新版maven獲得時(shí)間戳?xí)r區(qū)錯(cuò)誤的解決方案,最后介紹了把時(shí)間戳加到包名的兩種方法。
SpringBoot項(xiàng)目獲得編譯時(shí)間戳和版本號(hào),然后提供接口大概分為以下步驟:
- 在pom文件中獲取maven的編譯時(shí)間戳
- 配置pom,用maven中的屬性渲染資源文件application.yml
- 提供接口
Maven中獲得編譯時(shí)間
在 pom文件properties 中添加兩個(gè)屬性
<properties> <!--maven.build.timestamp保存了maven編譯時(shí)間戳--> <timestamp>${maven.build.timestamp}</timestamp> <!--指定時(shí)間格式--> <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@
提供接口
創(chuàng)建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 { /** * 當(dāng)前版本 */ @Value("${app.version}") private String version; /** * 打包時(shí)間 */ @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是我封裝的返回對(duì)象 return ResultGenerator.genSuccessResult(ret); } }
測(cè)試
用YAPI測(cè)試如下
maven.build.timestamp時(shí)區(qū)錯(cuò)誤解決方案
在Maven 3.2.2+中, maven.build.timestamp已被重新定義,顯示UTC中的時(shí)間,比中國(guó)時(shí)間慢8個(gè)小時(shí)??梢允褂?a href='http://mengdiqiu.com.cn/dedecms_mk/' target='_blank'>插件build-helper-maven-plugin獲得本時(shí)區(qū)的時(shí)間
在plugins塊添加插件,這個(gè)配置與官網(wǎng)不一樣,按照官網(wǎng)的配置方式會(huì)報(bào)錯(cuò)
<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>
經(jīng)過上述處理后,屬性${build.time}已經(jīng)代表GMT-8時(shí)區(qū)的時(shí)間
application.yml配置如下
app: version: @project.version@ build: time: @build.time@
IDEA 編譯項(xiàng)目不會(huì)調(diào)用 maven 生命周期,導(dǎo)致安裝的 plugin 不被執(zhí)行。雖然 maven 自帶變量可以被替換,但是自定義變量卻不會(huì)被替換。
可以將 IDEA 的 Build 與 maven goal 綁定起來,在 build 之前執(zhí)行 maven goal,IDEA 右側(cè) Maven Projects -> LifeCycle -> compile 勾選 Execute After Build和Execute After Rebuild ,如下圖
把時(shí)間戳加到包名
兩種方法不要重復(fù),否則
方法一:把時(shí)間戳加到版本號(hào)
<project> <versioin> 0.0.5.${build.time} </version> </project>
方法二:把時(shí)間戳直接加到包名
<project> <build> <finalName> ${project.artifactId}-${project.version}-${build.time} </finalName> </build> </project>
參考資料
maven 打包時(shí)間戳問題
以上就是本文的全部?jī)?nèi)容,希望對(duì)大家的學(xué)習(xí)有所幫助,也希望大家多多支持我們。
上一篇:沒有了
欄 目:Java
下一篇:沒有了
本文標(biāo)題:詳解SpringBoot獲得Maven-pom中版本號(hào)和編譯時(shí)間戳
本文地址:http://mengdiqiu.com.cn/a1/Java/8676.html
您可能感興趣的文章
- 01-10Springboot中@Value的使用詳解
- 01-10springboot實(shí)現(xiàn)文件上傳步驟解析
- 01-10springboot jta atomikos實(shí)現(xiàn)分布式事物管理
- 01-10mybatis分頁絕對(duì)路徑寫法過程詳解
- 01-10SpringBoot使用RabbitMQ延時(shí)隊(duì)列(小白必備)
- 01-10Java搭建RabbitMq消息中間件過程詳解
- 01-10如何基于SpringBoot部署外部Tomcat過程解析
- 01-10springboot集成fastDfs過程代碼實(shí)例
- 01-10SPRINGBOOT讀取PROPERTIES配置文件數(shù)據(jù)過程詳解
- 01-10springboot 配置DRUID數(shù)據(jù)源的方法實(shí)例分析


閱讀排行
- 1C語言 while語句的用法詳解
- 2java 實(shí)現(xiàn)簡(jiǎn)單圣誕樹的示例代碼(圣誕
- 3利用C語言實(shí)現(xiàn)“百馬百擔(dān)”問題方法
- 4C語言中計(jì)算正弦的相關(guān)函數(shù)總結(jié)
- 5c語言計(jì)算三角形面積代碼
- 6什么是 WSH(腳本宿主)的詳細(xì)解釋
- 7C++ 中隨機(jī)函數(shù)random函數(shù)的使用方法
- 8正則表達(dá)式匹配各種特殊字符
- 9C語言十進(jìn)制轉(zhuǎn)二進(jìn)制代碼實(shí)例
- 10C語言查找數(shù)組里數(shù)字重復(fù)次數(shù)的方法
本欄相關(guān)
- 01-10Java實(shí)現(xiàn)動(dòng)態(tài)模擬時(shí)鐘
- 01-10Springboot中@Value的使用詳解
- 01-10JavaWeb實(shí)現(xiàn)郵件發(fā)送功能
- 01-10利用Java實(shí)現(xiàn)復(fù)制Excel工作表功能
- 01-10Java實(shí)現(xiàn)動(dòng)態(tài)數(shù)字時(shí)鐘
- 01-10java基于poi導(dǎo)出excel透視表代碼實(shí)例
- 01-10java實(shí)現(xiàn)液晶數(shù)字字體顯示當(dāng)前時(shí)間
- 01-10基于Java驗(yàn)證jwt token代碼實(shí)例
- 01-10Java動(dòng)態(tài)顯示當(dāng)前日期和時(shí)間
- 01-10淺談Java中真的只有值傳遞么
隨機(jī)閱讀
- 08-05dedecms(織夢(mèng))副欄目數(shù)量限制代碼修改
- 01-10使用C語言求解撲克牌的順子及n個(gè)骰子
- 01-11Mac OSX 打開原生自帶讀寫NTFS功能(圖文
- 08-05織夢(mèng)dedecms什么時(shí)候用欄目交叉功能?
- 08-05DEDE織夢(mèng)data目錄下的sessions文件夾有什
- 01-10delphi制作wav文件的方法
- 01-11ajax實(shí)現(xiàn)頁面的局部加載
- 01-10C#中split用法實(shí)例總結(jié)
- 01-10SublimeText編譯C開發(fā)環(huán)境設(shè)置
- 04-02jquery與jsp,用jquery