如何在 profile.yml 中为 Quarkus 组合项目 yml 配置

How to combine project yml configurations for Quarkus in profile.yml

我们使用 quarkus 作为新项目服务的基础。 考虑到它的配置,可以使用 yml 个文件进行配置。

按照this的方式,添加

<dependency>
    <groupId>io.quarkus</groupId>
    <artifactId>quarkus-config-yaml</artifactId>
</dependency>

yml 配置已应用。为了改进这个配置,我想有机会把一些配置放在不同的文件中并将它们组合在一起,这取决于...

例如,我需要在单独的文件中进行下一个配置:

我想在我的主要 profile 配置中管理它们,就像其他配置文件导入一样

quarkus:
  profiles:
    include: postgre-ds, oracle-ds

或者喜欢从类路径导入

quarkus:
  import:
    config: classpath:application-postgre-ds.yml;application-oracle-ds.yml

但在他们的文档中没有发现任何有用的东西。

希望我错过了正确的说明,希望有人能帮助我进行组合配置。

Quarkus 部分支持:

每个配置文件可以有特定的配置文件: https://quarkus.io/guides/config-reference#profile-aware-files

但是在 Quarkus 中,您只能激活一个配置文件。例如,如果配置文件 dev 处于活动状态,Quarkus 将从 application-dev.properties 和主文件 application.properties 加载配置。来自 profile-aware 文件的配置具有优先权。

还有父配置文件的概念,您可以使用它在多个配置文件之间共享通用配置:https://quarkus.io/guides/config-reference#parent-profile

如果你真的需要 multi-profile 方法,正如我所说,Quarkus 并不正式支持它,但 SmallRye Config(Quarkus 使用)支持它:https://smallrye.io/smallrye-config/latest/config/profiles/#multiple-profiles。它应该适用于这个用例,但它没有集成到 Quarkus 中,因此围绕配置文件的一些 Quarkus 功能将无法正常工作。例如 @IfBuildProfile@UnlessBuildProfile 注释,但还有更多情况。所以慎用。