【问题标题】:"dev" config overrides "test" config in Quarkus“dev”配置覆盖 Quarkus 中的“test”配置
【发布时间】:2020-08-26 20:08:56
【问题描述】:

在我的 Quarkus 应用程序中,我不希望 Git 对密码进行版本控制。

prod 配置文件没有任何问题,因为我在 $PWD/config/application.properties 中有一个配置文件。很好。

对于dev 配置文件,我使用.env 方法,其中包含以下属性:

QUARKUS_DATASOURCE_PASSWORD=foo

我正在尝试设置测试,我需要一些单独的 conf 用于测试。 所以我的src/test/resources/application.properties 中有以下配置:

%test.quarkus.datasource.password=bar

不幸的是,测试值 (bar) 被 .env 值 (foo) 覆盖,该值应该专用于 dev 配置文件。

我没有找到一种优雅的方法来解决它。

基于https://quarkus.io/guides/config#overriding-properties-at-runtime,我有5种可能的方法:

  1. “使用系统属性”:我希望有一个文件,这样每个开发人员都可以拥有自己的文件,而无需在启动前调整命令行;
  2. “使用环境变量”:同理;
  3. .env 文件:可以工作,但我不能仅指定 dev 配置文件的值(又名 %dev.[...]);
  4. $PWD/config/application.properties 文件:嗯,这是用于开发模式的,我觉得它不方便,因为目标已清除,我必须在每个 mvn clean 之后再次复制 config 文件夹;
  5. 创建我自己的ConfigSourceConfigSourceProvider。我知道这个可以工作,但我更愿意避免在我的项目中做特定的事情,并保留内置的 Quarkus 配置。

【问题讨论】:

    标签: java quarkus microprofile eclipse-microprofile-config


    【解决方案1】:

    我刚刚发现我错了:

    1. .env 文件:可以工作,但我不能仅指定开发配置文件的值(又名 %dev.[...]);

    .env 文件中可以有自定义配置文件值:

    _DEV_QUARKUS_DATASOURCE_PASSWORD=foo
    

    由于我可以在属性前加上 _DEV_[...],因此该值仅适用于 dev 配置文件:test 属性不再被覆盖。

    【讨论】:

      猜你喜欢
      • 2023-01-03
      • 2011-09-24
      • 2022-10-16
      • 2018-11-29
      • 2017-09-08
      • 2014-07-02
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多