maven项目,自动获取jar包编译时间
为了加强公司的代码版本管理,增加了对于jar包版本号与编译时间的获取的需求,版本号好说,但是这个编译时间还是自动获取的好。
经过一番探索,终于可以了,先不说过程,只说如何做:
1 在pom里面,需要添加相关的properties,如下是我的pom.xml相关代码:
<properties>
<java.version>1.8</java.version>
<timestamp>${maven.build.timestamp}</timestamp>
<!--指定时间格式-->
<maven.build.timestamp.format>yyyy-MM-dd HH:mm:ss</maven.build.timestamp.format>
</properties>
2 在build段,需要添加对resources文件的filtering的声明,代码如下:
<!--指定资源的位置-->
<resource>
<directory>src/main/resources</directory>
<filtering>true</filtering>
</resource>
注意其关键点在于指明 filtering 为true,进行变量替换
3 在src/main/resources下面新建env.properties 文件,其内容如下 (后面会说明为何不直接写入application-xxx.yml中)
maven.buildTime=@timestamp@
4 在java代码里面,直接使用Properties相关代码来读取其配置文件:
@RequestMapping("/open/system/getVersion")
public RestfulResult getVersion() {
try {
Properties properties = new Properties();
InputStream in = Resources.getResourceAsStream("env.properties");
properties.load(in);
// 处理东八区时间
String buildTime = formatTimeHours(
properties.getProperty("maven.buildTime"), 8);
in.close();
Map<String, String> rtnMap = new HashMap<>();
rtnMap.put("version", "1.0.0");
rtnMap.put("buildTime", buildTime);
return RestfulResult.ok(rtnMap);