当前位置: 首页 > news >正文

springboot项目启动时打印maven打包时间

背景

生产环境部署的时候,开发给的包部署后没有生效;运维说开发给的包不对,开发说运维没有部署正确;于是想着能有一种方法来减少这种错误,启动的时候把打包的时间打印出来;

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;@Overridepublic 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);}
}
启动查看效果

在这里插入图片描述

大功告成。over~~

http://www.dtcms.com/a/360660.html

相关文章:

  • 华秋DFM检查PCB设计缺陷、一键导出Gerber、BOM、坐标文件
  • 平面椭圆转化为三阶Bezier曲线的方法
  • 目标检测算法YOLOv4详解
  • cloudflare 负载均衡器介绍
  • 用 MATLAB 实现遗传算法求解一元函数极值:从代码到实践
  • JS实现默认显示部分文字点击按钮显示全部内容
  • 使用组合子构建抽象语法树
  • 24数学建模国赛C
  • Linux性能调试工具之ftrace
  • 【开题答辩全过程】以 基于Java的城市公交查询系统设计与实现为例,包含答辩的问题和答案
  • 元宇宙与旅游产业:虚实融合的文旅新体验
  • 【代码随想录day 21】 力扣 216.组合总和III
  • 【代码随想录day 22】 力扣 39. 组合总和
  • 2025年跨领域职业发展证书选择指南
  • 设计模式:外观模式(Facade Pattern)
  • [线上问题排查]深度剖析:一条MySQL慢查询的全面优化实战
  • 操作文件 File类
  • Linux网络编程04:网络基础(万字图文解析)
  • Day19_【机器学习—线性回归 (2)】
  • 【大模型记忆-Mem0详解-1】概述
  • springboot整合minio实现上传下载搭建minio
  • 【CVPR24-工业异常检测】InCTRL:少样本基于上下文残差学习的通才异常检测
  • 安装pthread man手册
  • 决策思维研究体系主要构成
  • B 站 “成分” 检测工具,深挖历史记录,秒测二次元浓度
  • OWASP Top 10漏洞详解
  • MCP(Model Context Protocol,模型上下文协议)介绍
  • 图像质量评价——结构相似度
  • CVPR上的多模态检索+视频理解,LLM助力提效翻倍
  • 基于Basilisk库实现三种姿态的切换