0

我有一个 spring boot 项目,我想为 info 端点添加一些信息。

要添加 spring-boot-actuator,我将它添加到 gradle.build。现在,我想要这样的东西:

{
    "app" : {
        "version" : "1.0.0",
        "description" : "my program",
        "name" : "my program",
        "build-time" : "2016-04-08_06-26-53",
        "build-tag" : "jenkins-infinity-sprint-5023",
        "revision": "849604ec53b91d7903732f07eb3ca79c8f8dcf2b",
}

}

我想从可以在编译时填写的属性文件中获取大部分值。我的第一种方法是:

# application.properties

info.app.description=my program
info.app.name=my program
info.app.build-time=${System.env['BUILD_ID']}
info.app.build-tag=${System.env['BUILD_TAG']}
info.app.revision=${System.env['MERCURIAL_REVISION']}
info.app.version=${version}

但是当我调用 /info 时得到的 JSON 响应是这样的:

{
    "app": {
        "build-time": "${System.env['BUILD_ID']}"
        "version": "${version}"
        "description": "my program"
        "revision": "${System.env['MERCURIAL_REVISION']}"
        "build-tag": "${System.env['BUILD_TAG']}"
        "name": "my program"
    }
}

首先,我不知道为什么没有替换这些值。我究竟做错了什么?

我最初的想法是在 Manifest.mf 文件中填写我需要的所有值,你知道怎么做吗?

4

1 回答 1

1

您必须将过滤任务显式添加到 gradle,例如:

processResources() {
    filesMatching("application.properites") {
        filter(ReplaceTokens, tokens:  [
                'build-time': System.env['BUILD_ID']
        ])
    }
}

您的属性文件应使用@占位符:

info.app.build-time=@build-time@
于 2016-05-10T13:02:33.290 回答