Spring Boot如何獲取maven打包時間
Spring Boot 獲取maven打包時間
1.引入maven打包插件
<build>
<plugins>
<!-- 打包時生成打包時間 -->
<plugin>
<groupId>org.codehaus.mojo</groupId>
<artifactId>buildnumber-maven-plugin</artifactId>
<version>3.2.0</version>
<configuration>
<timestampFormat>yyyy-MM-dd HH:mm:ss</timestampFormat>
</configuration>
<executions>
<execution>
<goals>
<goal>create-timestamp</goal>
</goals>
</execution>
</executions>
<inherited>false</inherited>
</plugin>
</plugins>
<!-- maven打包時包含靜態(tài)資源文件 -->
<resources>
<resource>
<directory>src/main/resources</directory>
<includes>
<include>**/*.properties</include>
<include>**/*.yaml</include>
<include>META-INF/**</include>
<include>**/*.xml</include>
</includes>
<!-- true表示maven會對文件進行過濾,將@project.version@替換為該屬性的值 -->
<filtering>true</filtering>
</resource>
<resource>
<directory>src/main/java</directory>
<includes>
<include>**/*.properties</include>
<include>**/*.xml</include>
</includes>
<filtering>true</filtering>
</resource>
</resources>
</build>2.application.properties內(nèi)引用
#獲取build時的時間 app.buildTime=@timestamp@ #獲取項目版本 app.version=@project.version@
擴展:
SpringBoot項目設(shè)置maven打包時間
項目調(diào)試過程中會遇到這樣一個場景,明明修改了代碼,上傳到服務(wù)器重啟后總是會懷疑不是最新的包,為了證明代碼是最更新的,我們通常會在代碼里面輸出一句話以證明代碼是修改之后的,但是這樣做會很麻煩,
每次都要加多余的代碼,有時候打包之前可能還會忘記加,所有就想著有沒有通用的辦法解決這個問題,以后就不再為此操心.
我們一下就能想到的解決方案就是使用maven的打包時間,那么怎么才能動態(tài)的獲取到maven的打包時間呢?
憑借著強大的搜索引擎我找到了兩種方法,在此梳理總結(jié)一下,供大家參考,以便日后查找
第一步要在pom.xml中獲取到打包時間
在pom.xml文件的properties中添加如下內(nèi)容
<properties>
<!--指定時間格式-->
<maven.build.timestamp.format>yyyy-MM-dd HH:mm:ss</maven.build.timestamp.format>
<!--maven.build.timestamp保存了maven編譯時間戳-->
<timestamp>${maven.build.timestamp}</timestamp>
</properties>其中timestamp就是maven打包編譯的時間,但是記錄的時間是UTC時間(世界標準時間),與中國相差8個時區(qū),如果要把打包時間寫到包名上則需要借助build-helper-maven-plugin插件獲得本時區(qū)的時間,
我們這里是要在代碼中獲取該時間,因此也可以用代碼來處理.
方案一.使用自定義的properties配置文件來獲取到maven的打包時間
1.1 在pom.xml的build中添加如下內(nèi)容,使properties能取到pom.xml中的數(shù)據(jù)
<resources>
<resource>
<directory>src/main/resources/</directory>
<filtering>true</filtering>
</resource>
</resources>1.2 在resources下新建remote.properties文件

文件內(nèi)容如下
# maven打包時間 maven.package_time=@timestamp@
@XXX@ 雙@表示要去pom.xml中的參數(shù)值,XXX就是pom.xml的值
1.3 新建配置類
@Configuration
@ConfigurationProperties(prefix = "maven", ignoreUnknownFields = false)
@PropertySource(value= "classpath:config/maven.properties",encoding = "utf-8")
@Data
@Component
public class MavenProperties {
/**maven打包時間*/
private String package_time;
}1.4 代碼中使用方式
@Resource
private MavenProperties mavenProperties;@Test
public void run() throws Exception {
log.info("打包時間:{}",mavenProperties.getPackage_time());
}maven 中的build resource 中的filtering作用
方案二.使用SpringBoot默認的application.yml配置文件來獲取maven的打包時間,使用起來簡單許多
2.1在application.yml文件中添加如下配置
maven: package_time: '@timestamp@' # maven打包時間
'@XXX@' 雙@表示要去pom.xml中的參數(shù)值,XXX就是pom.xml的值
注意引號不能掉,否則會報錯(yml bug導(dǎo)致)
2.2獲取到之后代碼中使用就行了
@Value("${maven.package_time}")
private String packageTime;@Test
public void run() throws Exception {
log.info("打包時間:{}", modifyTime(packageTime));
}/**
* 修改時間為東8區(qū)
* @param date
* @return
*/
private String modifyTime(String date) {
Date oldDate=null;
try {
SimpleDateFormat simpleDateFormat = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss");
oldDate = simpleDateFormat.parse(date);
} catch (ParseException e) {
e.printStackTrace();
}
Calendar calendar = Calendar.getInstance();
calendar.setTime(oldDate);
calendar.add(Calendar.HOUR_OF_DAY, +8);
return DateUtil.calendarToDateStr(calendar);
}到此這篇關(guān)于Spring Boot 獲取maven打包時間的文章就介紹到這了,更多相關(guān)Spring Boot maven打包時間內(nèi)容請搜索腳本之家以前的文章或繼續(xù)瀏覽下面的相關(guān)文章希望大家以后多多支持腳本之家!
- spring-boot-maven-plugin:打包時排除provided依賴問題
- 基于spring-boot-maven-plugin插件打包lib文件外置的方法(layout模式為ZIP模式)
- springboot實現(xiàn)maven多模塊和打包部署
- Springboot 使用maven release插件執(zhí)行版本管理及打包操作
- maven?springboot如何將jar包打包到指定目錄
- Spring Boot Maven Plugin打包異常解決方案
- SpringBoot使用Maven插件進行項目打包的方法
- SpringBoot+Maven 多模塊項目的構(gòu)建、運行、打包實戰(zhàn)
相關(guān)文章
Java中static與instance的區(qū)別及作用詳解
這篇文章主要為大家介紹了Java中static與instance的區(qū)別及作用詳解,有需要的朋友可以借鑒參考下,希望能夠有所幫助,祝大家多多進步,早日升職加薪2023-07-07
Java基礎(chǔ)知識之ByteArrayOutputStream流的使用
這篇文章主要介紹了Java基礎(chǔ)知識之ByteArrayOutputStream流的使用,具有很好的參考價值,希望對大家有所幫助。如有錯誤或未考慮完全的地方,望不吝賜教2021-12-12
SpringBoot3實現(xiàn)Gzip壓縮優(yōu)化的技術(shù)指南
隨著 Web 應(yīng)用的用戶量和數(shù)據(jù)量增加,網(wǎng)絡(luò)帶寬和頁面加載速度逐漸成為瓶頸,為了減少數(shù)據(jù)傳輸量,提高用戶體驗,我們可以使用 Gzip 壓縮 HTTP 響應(yīng),本文將介紹如何在 Spring Boot 3 中實現(xiàn) Gzip 壓縮優(yōu)化,需要的朋友可以參考下2025-04-04

