将 Gradle 属性注入 Spring Boot application.yml,在 IntelliJ IDEA 中不起作用
Inject Gradle properties into Spring Boot application.yml, not working in IntelliJ IDEA
我已经设法将 Gradle proj.ver 注入到 application.yml 中,然后将其注入到服务应用程序中。
我的 application.yml 看起来像这样:
project:
version: ${version}
但只有当我使用以下命令从 cli 启动应用程序时它才有效:
gradle bootRun
如果我尝试从 IntelliJ 启动应用程序,它不起作用并且失败了:
Caused by: java.lang.IllegalArgumentException: Could not resolve placeholder 'version' in value "${version}"
我阅读了 Whosebug 的所有答案,他们提出了两个解决方案:
使用 spring 配置文件
在启动 gradle 任务之前修改 运行 配置和 运行:processResources
当我 运行ning 时,我更喜欢 default 之类的 proj.ver 值来自 IntelliJ。那可能吗?或者对于这种情况有更好的解决方案吗?
谢谢
正如 M. Deinum 在上面的评论中所说,我设法 运行 来自 IntelliJ 的应用程序,但现在 gradle bootRun
开始失败:
Caused by: groovy.lang.MissingPropertyException: No such property: unknown for class: SimpleTemplateScript2
经过更多研究,似乎 ${version?:unknown}
( 带有问号 )它可以在 IDE 或 cli 中工作。
我更新了回复,以便其他人知道如何将 Gradle 构建信息注入 Spring-boot:
1) 告诉 Gradle 将构建数据传递给 Spring yml 文件,如下所示:
processResources {
filesMatching('appInfo.yml') {
expand(project.properties)
}}
2) appInfo.yml 看起来像:
project:
version: ${version?:unknown}
3) 将构建版本注入 Spring 服务,例如:
@Value("${project.version}")
private String applicationVersion;
我已经设法将 Gradle proj.ver 注入到 application.yml 中,然后将其注入到服务应用程序中。 我的 application.yml 看起来像这样:
project:
version: ${version}
但只有当我使用以下命令从 cli 启动应用程序时它才有效:
gradle bootRun
如果我尝试从 IntelliJ 启动应用程序,它不起作用并且失败了:
Caused by: java.lang.IllegalArgumentException: Could not resolve placeholder 'version' in value "${version}"
我阅读了 Whosebug 的所有答案,他们提出了两个解决方案:
使用 spring 配置文件
在启动 gradle 任务之前修改 运行 配置和 运行:processResources
当我 运行ning 时,我更喜欢 default 之类的 proj.ver 值来自 IntelliJ。那可能吗?或者对于这种情况有更好的解决方案吗?
谢谢
正如 M. Deinum 在上面的评论中所说,我设法 运行 来自 IntelliJ 的应用程序,但现在 gradle bootRun
开始失败:
Caused by: groovy.lang.MissingPropertyException: No such property: unknown for class: SimpleTemplateScript2
经过更多研究,似乎 ${version?:unknown}
( 带有问号 )它可以在 IDE 或 cli 中工作。
我更新了回复,以便其他人知道如何将 Gradle 构建信息注入 Spring-boot:
1) 告诉 Gradle 将构建数据传递给 Spring yml 文件,如下所示:
processResources {
filesMatching('appInfo.yml') {
expand(project.properties)
}}
2) appInfo.yml 看起来像:
project:
version: ${version?:unknown}
3) 将构建版本注入 Spring 服务,例如:
@Value("${project.version}")
private String applicationVersion;