使用 build.gradle 中 application.yml 文件中的值

Posted

技术标签:

【中文标题】使用 build.gradle 中 application.yml 文件中的值【英文标题】:Use value from application.yml file inside build.gradle 【发布时间】:2021-04-22 23:16:16 【问题描述】:

我想知道我的 application.yml 文件中是否可以有一个值:

app:
  constant:
    foo:
      fooValue: 'test'

并获取此值并将其放入我的 build.gradle 文件中的变量中

到目前为止我已经尝试过:

How to load yml propery to gradle

我尝试了上面链接中的解决方案,但是

def app = new org.yaml.snakeyaml.Yaml().loadAll(new File("src/main/resources/application.yml").newInputStream()).first()

上面在我的 build.gradle 中抛出了一个错误'src\main\resources\application.yml (The system cannot find the path specified)'

有谁知道我可以如何解决上述错误或更好的解决方案?

【问题讨论】:

您是否需要在构建时和应用程序运行时访问该值? @JeffScottBrown 构建时间 为什么要应用程序的application,yml 配置文件中的数据?更好的计划是将该文件排除在外,因为将 Gradle 构建配置与 Micronaut 运行时配置混合在同一个文件中会导致混淆。 @JeffScottBrown 是的,你是对的,有更好的方法。我只是有点缺乏经验,所以认为这也许是个好主意,但似乎我可以做得更好。我试图让我的 build.gradle 文件知道它在哪个环境中运行(dev、qa 等)。 【参考方案1】:

如果有人想知道,将 $projectDir 添加到文件路径的开头可以解决问题。

def app = new org.yaml.snakeyaml.Yaml().loadAll(new File("$projectDir/src/main/resources/application.yml").newInputStream()).first()

【讨论】:

如果只是new File("application.yml"),是否有效? @R.G 不,它一直说找不到指定的路径。

以上是关于使用 build.gradle 中 application.yml 文件中的值的主要内容,如果未能解决你的问题,请参考以下文章

使用 clean() 方法在我的 build.gradle 中出错

使用 build.gradle 中 application.yml 文件中的值

【白水日记】使用build.gradle.kts

Gradle中的build.gradle文件

build.gradle 中的父 pom 用法

Maven:如何使用 build.gradle 文件?