【问题标题】:Spring Boot Actuator infoSpring Boot 执行器信息
【发布时间】:2016-09-05 10:32:39
【问题描述】:

我有一个 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 文件中填写我需要的所有值,你知道怎么做吗?

【问题讨论】:

    标签: spring-mvc gradle spring-boot manifest.mf spring-boot-actuator


    【解决方案1】:

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

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

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

    info.app.build-time=@build-time@
    

    【讨论】:

    • 它不工作,我得到:"build-time": "@build-time@"
    • 看起来filesMatching(...) 没有选择您的文件。我的 sn-p 中的路径显然是信息性的,您应该将其替换为文件的位置。
    猜你喜欢
    • 1970-01-01
    • 2021-10-30
    • 2019-01-19
    • 1970-01-01
    • 1970-01-01
    • 2014-04-07
    • 2016-02-13
    • 2018-03-03
    • 2018-08-29
    相关资源
    最近更新 更多