我想传递这样的东西
tracing:
service: "test-service"
host: ${TRACING_AGENT_HOST}
port: ${PORT}
application.yaml
就像一个静态属性文件。它不涉及变量替换。
仔细阅读https://helidon.io/docs/latest/#/mp/guides/03_config的段落默认配置的源优先级,并观察如何覆盖嵌入式配置文件中的属性。
在这种情况下,您可以简单地通过将自定义变量传递到 java 命令行来覆盖您想要的属性。
例如,您可以按如下所述实现您的目标:
tracing:
service: "test-service"
host: default-host-name
port: 8080
java -Dtracing.host=remote-hostname -Dtracing.port=8080 -jar your_artifact.jar
或
export TRACING_HOST=remote-hostname
export TRACING_PORT=8080
java -jar your_artifact.jar
无论您使用 Helidon SE 还是 Helidon MP,配置源都是“堆叠”的,并且属性标量是独立的。因此,如果您不指定:
tracing:
host:
…完全可以,如果您已确保已安装环境变量读取配置源,那么将从环境中读取它。
您可以在此处阅读有关 Helidon SE 专有配置系统的更多信息:https://helidon.io/docs/v2/#/se/config/01_introduction
您可以在此处阅读有关 MicroProfile 配置系统(Helidon MP 实现)的更多信息:https://download.eclipse.org/microprofile/microprofile-3.3/microprofile-spec-3.3.html#mp-config
对于 Helidon 3,这似乎是工作惯例
对于与此对应的配置 yaml 值,
app:
persistenceProvider:
className: com.example.provider.InMemoryProvider
你需要像这样导出变量
export app_persistenceProvider_className=com.example.provider.InMemoryProvider