如何覆盖 Quarkus 中的属性?

Posted

技术标签:

【中文标题】如何覆盖 Quarkus 中的属性?【英文标题】:How can I override properties in Quarkus? 【发布时间】:2019-07-29 07:35:43 【问题描述】:

我想覆盖我在Quarkus 应用程序的配置文件中配置的属性。

我怎样才能做到这一点?

【问题讨论】:

System.setProperty() 怎么样?这是一个解决我的问题的例子:***.com/a/61449847/3806701 这很可能在 Quarkus 中不起作用(取决于您何时使用) 【参考方案1】:

Quarkus 中的属性一般配置在src/main/resources/application.properties

对于配置 Quarkus 行为的属性(例如它侦听的 http 端口或要连接到的数据库 URL)和特定于您的应用程序的属性(例如 greeting.message 属性)都是如此.

前者的可覆盖性取决于相关配置。例如,http 属性(如quarkus.http.port)是可覆盖的。

后者总是在运行时被覆盖。

在 JVM 模式下运行 Quarkus 应用程序时,例如,您可以执行以下操作:

java -Dgreeting.message=hi -jar example-runner.java

同样,当运行已使用 GraalVM(特别是 SubstrateVM 系统)转换为本机二进制文件的 Quarkus 应用程序时,您可以这样做:

./example-runner -Dgreeting.message=hi

更多信息可以在“Quarkus - Configuring Your Application”官方指南中找到

【讨论】:

如果您需要为不同的环境配置大量属性怎么办?在命令行上列出它们似乎效率低下。是否不能在运行时应用覆盖文件位置? 目前你不能这样做,但是有一个问题:github.com/quarkusio/quarkus/issues/1218 暂时有一个选项:如果您将application.properties 文件放在config 目录中(它本身在当前工作目录中),那么它将优先于在项目中。 @csotiriou 有一些关于记录它的问题,我现在找不到......但是代码是事实的最终来源:P。 github.com/quarkusio/quarkus/blob/master/core/runtime/src/main/… 这里是文档链接https://quarkus.io/guides/config#overriding-properties-at-runtime

以上是关于如何覆盖 Quarkus 中的属性?的主要内容,如果未能解决你的问题,请参考以下文章

如何在 Quarkus 中以编程方式覆盖应用程序属性

“dev”配置覆盖 Quarkus 中的“test”配置

Quarkus - 更改默认会话 cookie 名称

如何更新使用的quarkus版本

如何增加 Quarkus 中的事务超时?

Quarkus & Microprofile:有没有更好的方法将 application.properties 中的属性用于@ClientHeaderParam?