springboot项目启动时打印maven打包时间实现方式
更新时间:2026年01月05日 09:51:40 作者:万物皆字节
文章介绍了通过在pom文件中配置资源过滤和新增一个配置类来映射properties文件内字段,从而在启动时打印出打包时间的方法,以减少开发和运维之间的沟通错误
背景
生产环境部署的时候,开发给的包部署后没有生效;运维说开发给的包不对,开发说运维没有部署正确;
于是想着能有一种方法来减少这种错误,启动的时候把打包的时间打印出来;
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
内容如下即可:
# maven 打包时间 build.time= @maven.build.timestamp@
用两个@符号将maven打包可识别的变量包住
配置pom文件,让打包的时候能让maven编译时替换properties文件内容
<build>
<resource>
<directory>src/main/resources</directory>
<includes>
<include>**/**</include>
</includes>
<filtering>true</filtering>
</resource>
</resources>
</build>
关键配置:filtering 为true
新增一个配置类映射properties文件内字段
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打包相关配置类
*/
@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);
}
}
启动查看效果

总结
以上为个人经验,希望能给大家一个参考,也希望大家多多支持脚本之家。
相关文章
java.io.File的renameTo方法移动文件失败的解决方案
这篇文章主要介绍了java.io.File的renameTo方法移动文件失败的解决方案,具有很好的参考价值,希望对大家有所帮助。如有错误或未考虑完全的地方,望不吝赐教2021-07-07
Java Stream中map与flatMap对比超详细教程
这篇文章主要介绍了Java Stream中map与flatMap对比的相关资料,map()用于一对一转换,而flatMap()用于一对多转换并合并结果,文章详细解释了每个方法的基本功能、典型应用场景和示例代码,需要的朋友可以参考下2025-05-05
SpringBoot整合Mybatis Plus多数据源的实现示例
本文主要介绍了SpringBoot整合Mybatis Plus多数据源的实现示例,文中通过示例代码介绍的非常详细,具有一定的参考价值,感兴趣的小伙伴们可以参考一下2021-11-11
MyBatis Generator配置生成接口和XML映射文件的实现
本文介绍了配置MBG以生成Mapper接口和XML映射文件,过合理使用MBG和自定义生成策略,可以有效解决生成的Example类可能带来的问题,使代码更加简洁和易于维护2025-02-02


最新评论