当前位置: 首页 > 知识库问答 >
问题:

Quarkus不使用与配置文件相关的变量

方弘
2023-03-14

这两个链接:

  • https://quarkus.io/guides/config-reference#custom-简介和
  • https://quarkus.io/guides/config-reference#profile-感知文件

指定如何在Quarkus应用程序中使用不同的配置文件。我在测试环境中尝试了这两种变体,但基本上都失败了。

第一种变体(自定义配置文件)

我有一个主配置文件src/main/resources/application。属性,其中包含所有主要配置变量,但每个变量都有一个指定为值的env变量。

我的测试配置变量也在src/main/resources/application中。属性。它们的名称与前缀为%test的基本配置变量的名称相同

当我没有任何与任何配置变量相关的环境变量集时,则mvn-Dquarkus。测验profile=test clean verify按预期工作-前缀为%test的配置变量中的值 在测试期间使用。

但是,只要我指定了任何用作某个配置属性值的env变量,就不再使用该配置属性的测试值,而是使用该变量的值。这也破坏了我的CI/CD管道中的预期行为。

第二种变体(配置文件感知文件)

我有一个主配置文件src/main/resources/application。属性,我还有一个测试配置文件src/main/resources/application test。属性。我有和第一个变量相同的情况。也就是说,在主配置文件中,我有一个示例my。property=${MY_property}在测试配置文件配置中,我有MY。property=dummyValue

如果我没有设置env变量MY_PROPERTY,那么在运行时DummyValue值用于my.property。但是当我设置env变量MY_PROPERTY时,那么当我运行mvn-Dquarkus.test.profile=测试清洁验证时,DummyValue被完全忽略。因此,这再次破坏了我的测试环境。


共有1个答案

堵飞鸿
2023-03-14

正如@JavierToja在他的评论中提到的,环境变量的优先级高于属性。

因此,出于测试目的,我没有通过%test之类的属性创建测试配置文件。我的property=myValue或创建应用程序测试。属性,因为非测试配置文件中的env变量的值更受欢迎,我不会以这种方式实现所需的行为。

最后,我通过实现QuarkusTestProfileclass[1],解决了我在“主”配置文件(application.properties)中将测试配置文件优先于环境变量的问题。我重写了getConfigOverrides方法,使其返回键值对的映射,其中键是我要重写的属性名称,值是我希望首选的该属性的值,而不是环境变量中的值。

[1] https://quarkus.io/guides/getting-started-testing#testing_different_profiles

 类似资料:
  • 特别提醒 严重建议用阿里云邮进行测试,QQ邮箱好多坑 打开dao.js, 把conf的定义改一下, 使其能扫描到custom下面所有的配置文件 conf : { type : "org.nutz.ioc.impl.PropertiesProxy", fields : { paths : ["custom

  • 本文向大家介绍Linux网络相关配置文件,包括了Linux网络相关配置文件的使用技巧和注意事项,需要的朋友参考一下 Linux网络相关配置文件 一 网络参数与配置文件对应关系 所需要的网络参数 主要配置文件命名 重要参数 IP Netmask DHCP Gateway等 /etc/sysconfig/network-scripts/ifcfg-eth0 DEVICE=网卡名称 BOOTPROTO=

  • 我有基于环境的不同配置文件,需要加载它。如何实现,以及如何将Quarkus主应用程序的程序参数传递给开发人员配置文件(spring.config.location=classpath:/config/dev/application.yml) 是否有方法在启动@QuarkusMain时加载数据库配置。我已经将所有数据库配置配置到一个类中,以及如何在main中加载这个类。请对此提出建议。

  • 我正在使用spring Boot1.5.2,并使用配置文件,但我发现了一个非常奇怪的事情。 在application.yml中配置 application-dev.yml 看起来一切都还好。 但是当我尝试运行jar时,它总是使用dev概要文件,尽管显示我们现在使用概要文件。 我不知道我的yml配置哪里出了问题。我尝试将所有配置文件都包含在一个application.yml文件中。但是应用程序仍然使

  • 1、HBase版本hbase-0.20.5,Hadoop的版本hadoop-0.20.2,JDK1.6 2、如果想通过MR对hbase进行一些操作,首先是需要做一些配置内容的,配置的流程如下: a、默认安装完成了hadoop和hbase b、首先引入环境变量(修改/etc/profile文件,在文件末尾追加下面内容): # set java environment export JAVA_HOME

  • 在YAML中为Spring Boot 1.4应用程序定义属性时,我必须使用main/resources/application。yaml文件。到目前为止,一切顺利。 如何在运行或测试应用程序时根据特定配置文件使用YAML覆盖这些依赖项。