gpt4 book ai didi

gradle - 在application.yml中引用gradle属性

转载 作者:行者123 更新时间:2023-12-04 03:50:23 53 4
gpt4 key购买 nike

如果有人提出并回答了这个问题,或者有文档或示例,请原谅我。我花了几个小时在这里寻找关于stackoverflow的解决方案,并在gradle文档中花了更多时间,但未能完成这项工作。

我有一个带有标准Maven布局的spring boot项目。我正在使用gradle 2.4。这是relevent文件的布局:

/gradle.properties
/build.gradle
/settings.gradle
/src/main/resources/application.yml

gradle.properties中,我定义了以下属性:
name=Sample microservice
description=brief description of the service goes here
version=1.0.0-SNAPSHOT

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

我在application.yml中尝试了以下行,但是事情没有按预期进行:
info.app.name: ${name}
info.app.description: ${description}
info.app.version: ${version}

(我也尝试过 ${project.name},等等。这也不起作用。)

我运行了 gradlew properties ...这些属性与预期值一起列出。但是,当我运行构建时,yaml文件会按预期复制到 \build\resources\main中,但是 ${value}标记无法解析。

我还在 build.gradle文件中包括了以下几行,但仍未解决。
processResources {
filesMatching('gradle.properties') { expand(project.properties) }
}

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

任何建议或对文档有帮助的指针将不胜感激!

最佳答案

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

TL; DR:在Spring Boot 1.2.5中,/info将忽略application.yml中的info。*属性;需要将application.properties用于info。*属性。

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

info.build.description=${description}
info.build.name=${name}
info.build.version=${version}

其次,将此代码段添加到您的build.gradle文件中:
processResources {
filesMatching("**/application.properties") {
expand( project.properties )
}
}

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

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

请注意,对于奖励积分,您也可以将其添加到build.gradle中,以在/info端点中获取Git信息:
apply plugin: "com.gorylenko.gradle-git-properties"

您还需要将其添加到build.gradle的dependencies部分,以使其正常工作:
classpath 'gradle.plugin.com.gorylenko.gradle-git-properties:gradle-git-properties:1.+'

希望这可以帮助!

关于gradle - 在application.yml中引用gradle属性,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/33043866/

53 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com