首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >Quarkus不使用与配置文件相关的变量。

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

Stack Overflow用户
提问于 2021-10-04 20:05:03
回答 1查看 602关注 0票数 1

这两个联系:

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

1变体(自定义配置文件)

我有主配置文件src/main/resources/application.properties,它包含所有主配置变量,但每个变量都有一个赋值的env变量。

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

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

但是,一旦我指定了用作某个config属性的值的任何env变量,则不再使用此config属性的测试值,而是使用来自该变量的值。这也破坏了我的CI/CD管道中的预期行为。

第2变体(配置文件)

我有一个主配置文件src/main/resources/application.properties,还有一个测试配置文件src/main/resources/application-test.properties。对于变量,我有与第一个变量相同的场景。这意味着,例如,在主配置文件中,我有my.property=${MY_PROPERTY},而在测试配置文件中,我有my.property=dummyValue

如果我不设置env变量MY_PROPERTY,那么dummyValue值将用于运行时的my.property。但是,当我设置env变量MY_PROPERTY时,dummyValue在运行mvn -Dquarkus.test.profile=test clean verify时会被完全忽略。因此,这再次破坏了我的测试环境。

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2021-10-05 17:41:48

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

因此,为了测试目的,我没有通过像%test.my.property=myValue这样的属性创建测试概要文件,也没有通过创建application-test.properties作为非测试配置文件中的env变量的首选值,并且我不会以这种方式实现期望的行为。

最后,我通过实现“主”配置文件(application.properties)中的环境变量( QuarkusTestProfile class 1 )解决了我更喜欢测试配置文件的问题。我以这样的方式重写了getConfigOverrides方法,它返回一个键值对映射,其中键是我想要覆盖的属性名,而值是我希望使用的这个属性的值,而不是环境变量的值。

1

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/69441822

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档