详解SpringBoot获得Maven-pom中版本号和编译时间戳
这篇文章首先介绍了在SpringBoot中如何获得项目的编译时间和版本号,并向外提供接口,然后介绍了介绍了新版maven获得时间戳时区错误的解决方案,最后介绍了把时间戳加到包名的两种方法。
SpringBoot项目获得编译时间戳和版本号,然后提供接口大概分为以下步骤:
- 在pom文件中获取maven的编译时间戳
- 配置pom,用maven中的属性渲染资源文件application.yml
- 提供接口
Maven中获得编译时间
在pom文件properties中添加两个属性
${maven.build.timestamp} yyyy-MM-ddHH:mm:ss
用Maven属性渲染application.yml
在pom文件build中配置
src/main/resources true
在application.yml中配置
不能使用${}
app: version:@project.version@ build: time:@timestamp@
提供接口
创建AppController,提供接口Get/app
packagecn.yshow.modules.sys.controller; importcn.yshow.common.utils.restResult.RestResult; importcn.yshow.common.utils.restResult.ResultGenerator; importlombok.extern.slf4j.Slf4j; importorg.springframework.beans.factory.annotation.Value; importorg.springframework.web.bind.annotation.GetMapping; importorg.springframework.web.bind.annotation.RequestMapping; importorg.springframework.web.bind.annotation.RestController; importjava.util.HashMap; importjava.util.Map; /** *@authorzhaodzhaodongxx@outlook.com *@versionv1.0 *@since2018/12/1616:19 */ @Slf4j @RestController @RequestMapping("/app") publicclassAppController{ /** *当前版本 */ @Value("${app.version}") privateStringversion; /** *打包时间 */ @Value("${app.build.time}") privateStringbuildTime; @GetMapping publicRestResultuploadImg(){ Mapret=newHashMap<>(); ret.put("version",version); ret.put("buildTime",buildTime); //RestResult是我封装的返回对象 returnResultGenerator.genSuccessResult(ret); } }
测试
用YAPI测试如下
maven.build.timestamp时区错误解决方案
在Maven3.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-ddHH:mm GMT+8
经过上述处理后,属性${build.time}已经代表GMT-8时区的时间
application.yml配置如下
app: version:@project.version@ build: time:@build.time@
IDEA编译项目不会调用maven生命周期,导致安装的plugin不被执行。虽然maven自带变量可以被替换,但是自定义变量却不会被替换。
可以将IDEA的Build与mavengoal绑定起来,在build之前执行mavengoal,IDEA右侧MavenProjects->LifeCycle->compile勾选ExecuteAfterBuild和ExecuteAfterRebuild,如下图
把时间戳加到包名
两种方法不要重复,否则
方法一:把时间戳加到版本号
0.0.5.${build.time}
方法二:把时间戳直接加到包名
${project.artifactId}-${project.version}-${build.time}
参考资料
maven打包时间戳问题
以上就是本文的全部内容,希望对大家的学习有所帮助,也希望大家多多支持毛票票。
声明:本文内容来源于网络,版权归原作者所有,内容由互联网用户自发贡献自行上传,本网站不拥有所有权,未作人工编辑处理,也不承担相关法律责任。如果您发现有涉嫌版权的内容,欢迎发送邮件至:czq8825#qq.com(发邮件时,请将#更换为@)进行举报,并提供相关证据,一经查实,本站将立刻删除涉嫌侵权内容。