将Gradle属性注入Sping Boot 应用程序.yml,在IntelliJ IDEA中不起作用

2wnc66cl  于 2023-02-11  发布在  IntelliJ IDEA
关注(0)|答案(2)|浏览(258)

我已经成功地将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}"

我读了Stackoverflow的所有答案,他们提出了两个解决方案:
1.使用Spring截面轮廓
1.修改运行配置并在启动gradle任务之前运行:流程资源
当我从IntelliJ运行时,我更喜欢为proj.ver设置***default***值。这可能吗?或者对于这种情况有更好的解决方案吗?
谢谢

jv2fixgn

jv2fixgn1#

正如M. Deinum在上面的评论中所说,我设法从IntelliJ运行了这个应用程序,但现在gradle bootRun开始出现故障:
原因:groovy. lang.丢失属性异常:无此类属性:类未知:简单模板脚本2
经过更多的研究,似乎${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;
ovfsdjhp

ovfsdjhp2#

为了完成Kotlin用户,对我有效的是:

  1. build.gradle.kts
tasks.processResources { filesMatching("**/application.properties") { expand(project.properties) } }
  1. www.example.com application.properties
project.version= ${version}
  1. Service.kt
@Value("\${project.version}") lateinit var version: String

相关问题