详解SpringBoot获得Maven

网友投稿 668 2023-07-01

详解SpringBoot获得Maven

详解SpringBoot获得Maven

这篇文章首先介绍了在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}

参考资料

maven 打包时间戳问题

版权声明:本文内容由网络用户投稿,版权归原作者所有,本站不拥有其著作权,亦不承担相应法律责任。如果您发现本站中有涉嫌抄袭或描述失实的内容,请联系我们jiasou666@gmail.com 处理,核实后本网站将在24小时内删除侵权内容。

上一篇:Spring AOP中使用args表达式的方法示例
下一篇:Spring AOP中定义切点的实现方法示例
相关文章

 发表评论

暂时没有评论,来抢沙发吧~