官方文档现在已经非常清楚地描述了它,并支持多种选项。这里是一个简要总结...
最常见的方法是使用这种形式:
basedir = "/whatever/whatever"
basedir = ${?FORCED_BASEDIR}
如果环境变量被设置,它将覆盖默认值,否则将保持不变。-Dconfig.override_with_env_vars=true
来覆盖任何配置变量。在这种情况下,您无需创建重复声明。您的环境变量必须以前缀CONFIG_FORCE_
命名。请查看文档中环境变量到配置名称映射的工作原理。例如:CONFIG_FORCE_a_b__c___d
将被映射为a.b-c_d
。override_with_env_vars
选项,则可以使用以下描述的某些shell技巧。-D
JVM参数将覆盖Typesafe Config值。示例:# export my_PROP1=1
# export my_PROP2=2
#
# props=$(env | grep my_ | awk '{print "-D"$_}' ORS=' ')
#
# echo "JVM executable command is: java $props some.jar"
JVM executable command is: java -Dmy_PROP2=2 -Dmy_PROP1=1 some.jar
将大写字母转换为小写字母,如果环境变量不能直接映射到配置值,请随意对其进行子字符串操作。
我正在使用系统属性-Dconfig.override_with_env_vars=true
。使用该属性,所有属性都会自动通过环境变量进行覆盖。