这篇文章首先介绍了在springboot中如何获得项目的编译时间和版本号,并向外提供接口,然后介绍了介绍了新版maven获得时间戳时区错误的解决方案,最后介绍了把时间戳加到包名的两种方法。
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测试如下
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 ,如下图
把时间戳加到包名
两种方法不要重复,否则
方法一:把时间戳加到版本号
0.0.5.${build.time}
方法二:把时间戳直接加到包名
${project.artifactid}-${project.version}-${build.time}
参考资料
以上就是本文的全部内容,希望对大家的学习有所帮助,也希望大家多多支持萬仟网。
希望与广大网友互动??
点此进行留言吧!