0

在我的 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.envfoo被应该专用于配置文件的值( ) 覆盖dev

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

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

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

1 回答 1

2

我刚刚发现我错了:

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

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

_DEV_QUARKUS_DATASOURCE_PASSWORD=foo

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

于 2020-05-11T10:08:34.640 回答