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);
    }
}

启动查看效果

总结

以上为个人经验,希望能给大家一个参考,也希望大家多多支持脚本之家。

相关文章

  • 利用Jmeter发送Java请求的实战记录

    利用Jmeter发送Java请求的实战记录

    JMeter是Apache组织的开放源代码项目,它是功能和性能测试的工具,100%的用java实现,下面这篇文章主要给大家介绍了关于如何利用Jmeter发送Java请求的相关资料,需要的朋友可以参考下
    2021-09-09
  • java中雪花算法时钟回拨问题解决

    java中雪花算法时钟回拨问题解决

    本文介绍了分布式系统中使用雪花算法生成唯一ID时可能遇到的时钟回拨问题,以及解决这个问题的几种方法,包括等待机制、扩展位、预留时间戳或逻辑时钟等,感兴趣的可以了解一下
    2024-10-10
  • JAVA利用递归删除文件代码实例

    JAVA利用递归删除文件代码实例

    这篇文章主要介绍了JAVA利用递归删除文件代码实例,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友可以参考下
    2019-10-10
  • SpringCloud之服务注册与发现Spring Cloud Eureka实例代码

    SpringCloud之服务注册与发现Spring Cloud Eureka实例代码

    这篇文章主要介绍了SpringCloud之服务注册与发现Spring Cloud Eureka实例代码,小编觉得挺不错的,现在分享给大家,也给大家做个参考。一起跟随小编过来看看吧
    2018-04-04
  • SpringBoot整合多个Mq服务做法详解

    SpringBoot整合多个Mq服务做法详解

    SpringBoot整合rabbitmq很容易,但是整合的目的是为了使用,那要使用rabbitmq就要对其有一定的了解,不然容易整成一团浆糊。因为说到底,SpringBoot只是在封装rabbitmq的API,让其更容易使用而已,废话不多说,让我们一起整它
    2023-02-02
  • Java servlet、filter、listener、interceptor之间的区别和联系

    Java servlet、filter、listener、interceptor之间的区别和联系

    这篇文章主要介绍了Java servlet、filter、listener、interceptor之间的区别和联系的相关资料,需要的朋友可以参考下
    2016-11-11
  • JavaSE、JavaEE和JavaWeb三大工程目录详解

    JavaSE、JavaEE和JavaWeb三大工程目录详解

    这篇文章主要给大家介绍了关于JavaSE、JavaEE和JavaWeb三大工程目录的相关资料,很多对java不是很了解的同学在看到课程⼤纲的时候发现⾥⾯出现了JavaSE、JavaEE、JavaME、JavaWEB这些词,搞得⼀头雾⽔,需要的朋友可以参考下
    2023-07-07
  • javaweb实现app扫码登录功能

    javaweb实现app扫码登录功能

    这篇文章主要为大家详细介绍了javaweb实现app扫码登录功能,具有一定的参考价值,感兴趣的小伙伴们可以参考一下
    2018-10-10
  • springboot调用python文件的详细方案

    springboot调用python文件的详细方案

    这篇文章主要为大家详细介绍了springboot调用python文件的详细方案,文中的示例代码讲解详细,感兴趣的小伙伴可以跟随小编一起学习一下
    2025-04-04
  • Java实现四则混合运算代码示例

    Java实现四则混合运算代码示例

    这篇文章主要介绍了Java实现四则混合运算代码示例,文中展示了详细代码,具有一定参考价值,需要的朋友可以了解下。
    2017-10-10

最新评论