1

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

quarkus.datasource.db-kind=postgresql

我希望它被设置为:

export QUARKUS_DATASOURCE_DB_KIND=postgresql

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

Unrecognized configuration key "quarkus.datasource.db.kind" was provided; it will be ignored;

没有连字符的所有其他属性都正确传递。

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

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;

解决方法:重命名环境变量并将它们传递到 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}

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

4

3 回答 3

1

尝试用下划线替换连字符。尽管有警告消息,它在我的情况下仍然有效。

应用程序.yml

quarkus:
   swagger-ui:
     enable: false

码头运行

$ docker run -d -e QUARKUS_SWAGGER_UI_ENABLE=true -p 8080:8080 sample.com/foo
__  ____  __  _____   ___  __ ____  ______
 --/ __ \/ / / / _ | / _ \/ //_/ / / / __/
 -/ /_/ / /_/ / __ |/ , _/ ,< / /_/ /\ \
--\___\_\____/_/ |_/_/|_/_/|_|\____/___/
2021-06-09T05:34:55.192Z WARN  [io.qua.config] Unrecognized configuration key "quarkus.swagger.ui.enable" was provided; it will be ignored; verify that the dependency extension for this configuration is set or that you did not make a typo
2021-06-09T05:35:12.947Z INFO  [sam.com.access-log] 192.168.113.42 - - "GET /q/openapi HTTP/1.1" 200 14464 -
于 2021-06-09T05:37:10.703 回答
0

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

env "QUARKUS_DATASOURCE_DB-KIND=postgresql" quarkus

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

于 2021-06-03T23:57:22.800 回答
0

Quarkus 遵循MicroProfile的命名约定:

完全匹配(即 com.ACME.size)

用 _ 替换每个既不是字母数字也不是 _ 的字符(即 com_ACME_size)

用 _ 替换每个既不是字母数字也不是 _ 的字符;然后>将名称转换为大写(即COM_ACME_SIZE)

因此 QUARKUS_DATASOURCE_DB_KIND 是正确的,但该属性是仅构建时间的属性,如https://quarkus.io/guides/all-config#quarkus-datasource_quarkus.datasource.db-kind上的锁定图标所示

因此,您需要在构建时设置它才能生效。

也就是说,错误消息不是很好,如果您可以确认您正在尝试将其设置为运行时而不是构建时间,那么请打开您的上下文问题并建议改进错误消息以突出显示它是或可能只是构建时间财产。

于 2021-06-04T09:17:05.007 回答