springboot項目啟動時打印maven打包時間實現(xiàn)方式
背景
生產(chǎn)環(huán)境部署的時候,開發(fā)給的包部署后沒有生效;運維說開發(fā)給的包不對,開發(fā)說運維沒有部署正確;
于是想著能有一種方法來減少這種錯誤,啟動的時候把打包的時間打印出來;
pom文件配置
在pom文件中新增properties,maven打包的時候會讀取該配置:
<properties>
<maven.build.timestamp.format>yyyy-MM-dd'T'HH:mm:ssXXX</maven.build.timestamp.format>
</properties>
新增一個properties文件
在資源目錄新增一個properties文件,注意這里一定是一個properties文件,不能是yaml
內(nèi)容如下即可:
# maven 打包時間 build.time= @maven.build.timestamp@
用兩個@符號將maven打包可識別的變量包住
配置pom文件,讓打包的時候能讓maven編譯時替換properties文件內(nèi)容
<build>
<resource>
<directory>src/main/resources</directory>
<includes>
<include>**/**</include>
</includes>
<filtering>true</filtering>
</resource>
</resources>
</build>
關(guān)鍵配置:filtering 為true
新增一個配置類映射properties文件內(nèi)字段
import lombok.Getter;
import lombok.Setter;
import lombok.extern.slf4j.Slf4j;
import org.springframework.beans.factory.InitializingBean;
import org.springframework.boot.context.properties.ConfigurationProperties;
import org.springframework.context.annotation.PropertySource;
import org.springframework.stereotype.Component;
import java.time.Instant;
import java.time.ZoneId;
import java.time.format.DateTimeFormatter;
import java.util.Objects;
/**
* maven打包相關(guān)配置類
*/
@Component
@PropertySource(value = {"classpath:xxx.properties"}, encoding = "utf-8")
@ConfigurationProperties(prefix = "build")
@Getter
@Setter
@Slf4j
public class MavenBuildConfig implements InitializingBean {
/**
* 打包時間
*/
private String time;
@Override
public void afterPropertiesSet() throws Exception {
// utc時間
String buildTime = this.getTime();
if (Objects.nonNull(buildTime) && buildTime.contains("T") && buildTime.endsWith("Z")) {
try {
// 自定義格式(UTC 時間 → 本地時間字符串)
Instant instant = Instant.parse(buildTime);
DateTimeFormatter formatter = DateTimeFormatter.ofPattern(Utils.YYYY_MM_DD_HH_MM_SS).withZone(ZoneId.systemDefault());
buildTime = formatter.format(instant);
} catch (Exception e) {
log.error("afterPropertiesSet Error: {}", e.getMessage(), e);
}
}
log.info("========================== Maven-Build-Time: {} ==========================", buildTime);
}
}
啟動查看效果

總結(jié)
以上為個人經(jīng)驗,希望能給大家一個參考,也希望大家多多支持腳本之家。
相關(guān)文章
如何在maven本地倉庫中添加oracle的jdbc驅(qū)動
文章介紹了在Maven項目中添加Oracle數(shù)據(jù)庫驅(qū)動ojdbc5時遇到的問題以及解決問題的兩種方法,方法一為簡單粗暴,但沒有體現(xiàn)Maven倉庫的作用,需要手動管理jar包,方法二為在Maven本地倉庫中添加Oracle的JDBC驅(qū)動,過程較為繁瑣,但配置一次后可以多次使用2024-11-11
java.io.File的renameTo方法移動文件失敗的解決方案
這篇文章主要介紹了java.io.File的renameTo方法移動文件失敗的解決方案,具有很好的參考價值,希望對大家有所幫助。如有錯誤或未考慮完全的地方,望不吝賜教2021-07-07
Java?Stream中map與flatMap對比超詳細(xì)教程
這篇文章主要介紹了Java?Stream中map與flatMap對比的相關(guān)資料,map()用于一對一轉(zhuǎn)換,而flatMap()用于一對多轉(zhuǎn)換并合并結(jié)果,文章詳細(xì)解釋了每個方法的基本功能、典型應(yīng)用場景和示例代碼,需要的朋友可以參考下2025-05-05
javaweb啟動時啟動socket服務(wù)端代碼實現(xiàn)
這篇文章主要介紹了javaweb啟動時啟動socket服務(wù)端代碼實現(xiàn),文中通過示例代碼介紹的非常詳細(xì),對大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價值,需要的朋友可以參考下2019-11-11
SpringBoot整合Mybatis Plus多數(shù)據(jù)源的實現(xiàn)示例
本文主要介紹了SpringBoot整合Mybatis Plus多數(shù)據(jù)源的實現(xiàn)示例,文中通過示例代碼介紹的非常詳細(xì),具有一定的參考價值,感興趣的小伙伴們可以參考一下2021-11-11
MyBatis Generator配置生成接口和XML映射文件的實現(xiàn)
本文介紹了配置MBG以生成Mapper接口和XML映射文件,過合理使用MBG和自定義生成策略,可以有效解決生成的Example類可能帶來的問題,使代碼更加簡潔和易于維護2025-02-02

