Официальный документ теперь очень четко описывает это и поддерживает несколько варианты для этого. Вот краткое содержание...
Самый распространенный способ – использовать эту форму:
basedir = "/whatever/whatever"
basedir = ${?FORCED_BASEDIR}
Если установлена переменная env, она переопределит ваше значение по умолчанию, в противном случае она останется нетронутой.
Более удобным способом является использование свойства JVM -Dconfig.override_with_env_vars=true
для переопределения любой переменной конфигурации. В этом случае вам не нужно создавать дубликаты объявлений. Ваши переменные env должны быть названы с префиксом CONFIG_FORCE_
. Посмотрите, как работает преобразование имен env var в config в документации. Например: CONFIG_FORCE_a_b__c___d
будет сопоставлено с a.b-c_d
.
Наконец, если вы хотите развернуть свое собственное сопоставление, аналогичное варианту, описанному выше, без использования override_with_env_vars
, вы можете воспользоваться некоторым взломом оболочки, как описано ниже.
Если вам нужно использовать переменные среды и если их имена соответствуют именам конфигураций, вы можете использовать скрипт bash, подобный этому, для автоматического преобразования переменных вашей среды в аргументы cmd JVM. Эти -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
Преобразуйте верхний регистр в нижний, выполняйте операции с подстроками в env vars по своему усмотрению, если они не сопоставляются напрямую с вашими значениями конфигурации.
person
yǝsʞǝla
schedule
07.07.2016
-D
аргументов JVM - вам не нужно знать заранее/что-либо реализовывать. - person yǝsʞǝla   schedule 07.07.2016