SpringBoot如何获得Maven-pom中版本号和编译时间戳

这篇文章主要介绍了SpringBoot如何获得Maven-pom中版本号和编译时间戳,具有一定借鉴价值,感兴趣的朋友可以参考下,希望大家阅读完这篇文章之后大有收获,下面让小编带着大家一起了解一下。

创新互联专注为客户提供全方位的互联网综合服务,包含不限于成都网站设计、成都网站制作、邵东网络推广、成都小程序开发、邵东网络营销、邵东企业策划、邵东品牌公关、搜索引擎seo、人物专访、企业宣传片、企业代运营等,从售前售中售后,我们都将竭诚为您服务,您的肯定,是我们最大的嘉奖;创新互联为所有大学生创业者提供邵东建站搭建服务,24小时服务热线:13518219792,官方网址:www.cdcxhl.com

SpringBoot项目获得编译时间戳和版本号,然后提供接口大概分为以下步骤:

  • 在pom文件中获取maven的编译时间戳

  • 配置pom,用maven中的属性渲染资源文件application.yml

  • 提供接口

Maven中获得编译时间

在 pom文件properties 中添加两个属性


 
 ${maven.build.timestamp}
  
 yyyy-MM-dd HH:mm:ss

用Maven属性渲染application.yml

在pom文件build中配置


 
  
   src/main/resources
   true
  
 

在application.yml中配置

不能使用${}

app:
 version: @project.version@
 build:
 time: @timestamp@

提供接口

创建AppController,提供接口 Get /app

package cn.yshow.modules.sys.controller;

import cn.yshow.common.utils.restResult.RestResult;
import cn.yshow.common.utils.restResult.ResultGenerator;
import lombok.extern.slf4j.Slf4j;
import org.springframework.beans.factory.annotation.Value;
import org.springframework.web.bind.annotation.GetMapping;
import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.bind.annotation.RestController;

import java.util.HashMap;
import java.util.Map;

/**
 * @author zhaod zhaodongxx@outlook.com
 * @version v1.0
 * @since 2018/12/16 16:19
 */
@Slf4j
@RestController
@RequestMapping("/app")
public class AppController {
 /**
  * 当前版本
  */
 @Value("${app.version}")
 private String version;
 /**
  * 打包时间
  */
 @Value("${app.build.time}")
 private String buildTime;

 @GetMapping
 public RestResult uploadImg() {
  Map ret = new HashMap<>();
  ret.put("version",version);
  ret.put("buildTime",buildTime);
  
  //RestResult是我封装的返回对象
  return ResultGenerator.genSuccessResult(ret);
 }
}

测试

用YAPI测试如下

SpringBoot如何获得Maven-pom中版本号和编译时间戳

maven.build.timestamp时区错误解决方案

在Maven 3.2.2+中, maven.build.timestamp已被重新定义,显示UTC中的时间,比中国时间慢8个小时。可以使用插件build-helper-maven-plugin获得本时区的时间

在plugins块添加插件,这个配置与官网不一样,按照官网的配置方式会报错


 
  
  
   ${project.artifactId}-${project.version}-${build.time}
  
  
   
    org.codehaus.mojo
    build-helper-maven-plugin
    1.8
    
     
      timestamp-property
      
       timestamp-property
      
     
    
    
     build.time
     yyyy-MM-dd HH:mm
     GMT+8
    
   
  
 

经过上述处理后,属性${build.time}已经代表GMT-8时区的时间

application.yml配置如下

app:
 version: @project.version@
 build:
 time: @build.time@

IDEA 编译项目不会调用 maven 生命周期,导致安装的 plugin 不被执行。虽然 maven 自带变量可以被替换,但是自定义变量却不会被替换。

可以将 IDEA 的 Build 与 maven goal 绑定起来,在 build 之前执行 maven goal,IDEA 右侧 Maven Projects -> LifeCycle -> compile 勾选 Execute After Build和Execute After Rebuild ,如下图

SpringBoot如何获得Maven-pom中版本号和编译时间戳

把时间戳加到包名

两种方法不要重复,否则

方法一:把时间戳加到版本号


 
  0.0.5.${build.time}
 

方法二:把时间戳直接加到包名


 
  
   ${project.artifactId}-${project.version}-${build.time}
  
  
 

感谢你能够认真阅读完这篇文章,希望小编分享的“SpringBoot如何获得Maven-pom中版本号和编译时间戳”这篇文章对大家有帮助,同时也希望大家多多支持创新互联,关注创新互联行业资讯频道,更多相关知识等着你来学习!


当前文章:SpringBoot如何获得Maven-pom中版本号和编译时间戳
网页地址:http://hbruida.cn/article/isgpcc.html