在application.yml中引用gradle属性

drh*_*der 9 properties resolution reference gradle

如果这个问题已经被问及答案,或者有文档或示例,请原谅我.我花了几个小时在stackoverflow上寻找解决方案,甚至更多时间在gradle doc中并且无法完成这项工作.

我有一个带有非常标准的maven布局的spring boot项目.我正在使用gradle 2.4.这是相关文件的布局:

/gradle.properties
/build.gradle
/settings.gradle
/src/main/resources/application.yml
Run Code Online (Sandbox Code Playgroud)

gradle.properties,我已经定义了以下属性:

name=Sample microservice
description=brief description of the service goes here
version=1.0.0-SNAPSHOT
Run Code Online (Sandbox Code Playgroud)

在我的application.yml文件中,我想将相应的spring属性设置为相同的值.(我想在一个地方一起定义它们并在几个地方使用它们.由于version通常在gradle.properties中定义,我想将其余部分聚集在那里.)

我在application.yml中尝试了以下一行,但事情没有按预期工作:

info.app.name: ${name}
info.app.description: ${description}
info.app.version: ${version}
Run Code Online (Sandbox Code Playgroud)

(我也试过${project.name},等也没用.)

我跑了gradlew properties......列出的属性值与预期值一样.但是,当我运行构建时,yaml文件\build\resources\main将按预期复制到,但${value}令牌不会被解析.

我还在build.gradle文件中包含以下行,但事情仍未解决.

processResources {
   filesMatching('gradle.properties') { expand(project.properties) }
}
Run Code Online (Sandbox Code Playgroud)

(我的目标是使用执行器/info端点向服务调用者提供这些属性的值.)

任何建议或指向文档的指示将非常感谢!

m0j*_*0hn 7

我最近遇到了同样的情况 - 这对我有用.

TL; DR:在Spring Boot 1.2.5中,application.yml中的info.*属性被/ info忽略; 需要使用application.properties来获取info.*属性.

首先,使用以下内容创建src/main/resources/application.properties:

info.build.description=${description}
info.build.name=${name}
info.build.version=${version}
Run Code Online (Sandbox Code Playgroud)

其次,将此代码段添加到build.gradle文件中:

processResources {
    filesMatching("**/application.properties") {
        expand( project.properties )
    }
}
Run Code Online (Sandbox Code Playgroud)

接下来,正常运行您的构建.这将处理application.properties文件,并在将文件复制到build/resources/main/application.properties时将变量替换为其构建时值.

对我来说,在运行已部署的.jar时,我的/ info端点会填充扩展值,这是目标.

请注意,对于奖励积分,您可以将其添加到build.gradle以获取/ info端点中的Git信息:

apply plugin: "com.gorylenko.gradle-git-properties"
Run Code Online (Sandbox Code Playgroud)

您还需要将此添加到build.gradle的dependencies部分,以便工作:

classpath 'gradle.plugin.com.gorylenko.gradle-git-properties:gradle-git-properties:1.+'
Run Code Online (Sandbox Code Playgroud)

希望这可以帮助!