详解SpringBoot获得Maven-pom中版本号和编译时间戳
这篇⽂章⾸先介绍了在SpringBoot中如何获得项⽬的编译时间和版本号,并向外提供接⼝,然后介绍了介绍了新版maven获得时间戳时区错误的解决⽅案,最后介绍了把时间戳加到包名的两种⽅法。SpringBoot项⽬获得编译时间戳和版本号,然后提供接⼝⼤概分为以下步骤:
在pom⽂件中获取maven的编译时间戳
配置pom,⽤maven中的属性渲染资源⽂件l
提供接⼝
Maven中获得编译时间
在 pom⽂件properties 中添加两个属性
<properties>
<!--maven.build.timestamp保存了maven编译时间戳-->
<timestamp>${maven.build.timestamp}</timestamp>
<!--指定时间格式-->
<maven.build.timestamp.format>yyyy-MM-dd HH:mm:ss</maven.build.timestamp.format>
</properties>
⽤Maven属性渲染l
在pom⽂件build中配置
<build>
<resources>
<resource>
<directory>src/main/resources</directory>
<filtering>true</filtering>
</resource>
</resources>
</build>
在l中配置
不能使⽤${}
app:
version: @project.version@
build:
time: @timestamp@
提供接⼝
创建AppController,提供接⼝ Get /app
package ller;
import cn.stResult.RestResult;
import cn.stResult.ResultGenerator;
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
* @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<String,String> ret = new HashMap<>();
ret.put("version",version);
ret.put("buildTime",buildTime);
/
/RestResult是我封装的返回对象
SuccessResult(ret);
}
}
测试
⽤YAPI测试如下
maven.build.timestamp时区错误解决⽅案
在Maven 3.2.2+中, maven.build.timestamp已被重新定义,显⽰UTC中的时间,⽐中国时间慢8个⼩时。可以使⽤插件build-helper-maven-plugin获得本时区的时间
在plugins块添加插件,这个配置与官⽹不⼀样,按照官⽹的配置⽅式会报错
<project>
<build>
<!--指定包名 -->
<finalName>
${project.artifactId}-${project.version}-${build.time}
</finalName>
<plugins>
<plugin>
<groupId&jo</groupId>
<artifactId>build-helper-maven-plugin</artifactId>
<version>1.8</version>
<executions>
<execution>
<id>timestamp-property</id>
<goals>
<goal>timestamp-property</goal>
</goals>
</execution>
</executions>
<configuration>
<name>build.time</name>
<pattern>yyyy-MM-dd HH:mm</pattern>
<timeZone>GMT+8</timeZone>
</configuration>
</plugin>
</plugins>
</build>
</project>
经过上述处理后,属性${build.time}已经代表GMT-8时区的时间
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 ,如下图把时间戳加到包名
两种⽅法不要重复,否则
⽅法⼀:把时间戳加到版本号
<project>
<versioin>
0.0.5.${build.time}
</version>
</project>
⽅法⼆:把时间戳直接加到包名
<project>
spring framework<build>
<finalName>
${project.artifactId}-${project.version}-${build.time}
</finalName>
</build>
</project>
参考资料
以上就是本⽂的全部内容,希望对⼤家的学习有所帮助,也希望⼤家多多⽀持。
版权声明:本站内容均来自互联网,仅供演示用,请勿用于商业和其他非法用途。如果侵犯了您的权益请与我们联系QQ:729038198,我们将在24小时内删除。
发表评论