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);