使用 Gradle 在 Spring Boot 项目中自定义属性

J W*_*uck 3 gradle spring-boot

在我使用 gradle 构建的 Spring Boot 项目 (1.5.6.RELEASE) 中,我想包含一些自定义属性。文档中列出的方法似乎不起作用(在构建时,我得到:)Could not set unknown property 'additional' for task ':properties' of type org.gradle.api.tasks.diagnostics.PropertyReportTask.

springBoot {
    buildInfo {
        properties {
            additional = [
                'a': 'alpha',
                'b': 'bravo'
            ]
        }
    }
}
Run Code Online (Sandbox Code Playgroud)

幸运的是,我在这里找到的这种方法确实对我有用(没有编译错误,然后我可以从我的代码访问该属性):

springBoot{
    buildInfo {
        additionalProperties = [
            'testpropertykey': 'testpropertyvalue'
        ]
    }
}
Run Code Online (Sandbox Code Playgroud)

但是,由于前者是“官方”记录的方法,我更愿意采用这种方法。我如何让前一种方法发挥作用?我假设我遗漏了一些东西 - 除非文档错误或者可能是从 Spring Boot 1.5.6.RELEASE 更改的。

Fra*_*teo 5

您链接的文档适用于当前的版本,该版本与 Spring Boot 的当前 GA 版本一致:2.1.7

该插件的 1.5.x 版本确实有一个additionalProperties字段: https ://github.com/spring-projects/spring-boot/blob/1.5.x/spring-boot-tools/spring-boot-gradle-plugin/src/主/java/org/springframework/boot/gradle/buildinfo/BuildInfo.java#L66

2.1.x 版本没有,您可以使用properties https ://github.com/spring-projects/spring-boot/blob/2.1.x/spring-boot-project/spring-boot-tools/spring-boot- gradle-plugin/src/main/java/org/springframework/boot/gradle/tasks/buildinfo/BuildInfo.java#L45

建议您在 Spring Boot 2.1.x 或 2.2.x 发布后迁移/升级到该版本,因为 1.5.x 已经达到 EOL: https: //spring.io/blog/2018/07/30/spring-boot-1 -x-eol-8 月 1 日-2019