如何使用连字符为 quarkus 属性设置环境变量?

fae*_*anj 5 quarkus smallrye

当为带有连字符的属性设置环境变量时,例如:

quarkus.datasource.db-kind=postgresql
Run Code Online (Sandbox Code Playgroud)

我希望它被设置为:

export QUARKUS_DATASOURCE_DB_KIND=postgresql
Run Code Online (Sandbox Code Playgroud)

但是,这会导致以下消息:

Unrecognized configuration key "quarkus.datasource.db.kind" was provided; it will be ignored;
Run Code Online (Sandbox Code Playgroud)

所有其他属性(不带连字符)都会正确传递。

其他属性也会发生这种情况:

export QUARKUS_DATASOURCE_JDBC_MIN_SIZE=10
export QUARKUS_DATASOURCE_JDBC_INITIAL_SIZE=20
export QUARKUS_DATASOURCE_JDBC_MAX_SIZE=1000
...
Unrecognized configuration key "quarkus.datasource.jdbc.max.size" was provided;
Unrecognized configuration key "quarkus.datasource.jdbc.min.size" was provided;
Unrecognized configuration key "quarkus.datasource.jdbc.initial.size" was provided;
Run Code Online (Sandbox Code Playgroud)

解决方法:重命名环境变量并将其传递到 application.properties,并使用连字符名称:

quarkus.datasource.jdbc.initial-size=${DATASOURCE_JDBC_INITIAL_SIZE}
quarkus.datasource.jdbc.min-size=${DATASOURCE_JDBC_MIN_SIZE}
quarkus.datasource.jdbc.max-size=${DATASOURCE_JDBC_MAX_SIZE}
Run Code Online (Sandbox Code Playgroud)

什么是正确的转换?它记录在某处吗?

myz*_*540 -1

我认为大多数 shell 都认为连字符是无效的标识符。根据 quarkus 的运行方式(CLI?),您可以执行类似的操作

env "QUARKUS_DATASOURCE_DB-KIND=postgresql" quarkus
Run Code Online (Sandbox Code Playgroud)

这对环境变量如何转换为配置键做出了一些假设。根据您提供的信息,它看起来像是转换为小写并替换_.? 谁知道它会对连字符做什么