Конфигурация Typesafe загружает неправильную конфигурацию - PullRequest
0 голосов
/ 24 декабря 2018

Итак, проблема действительно проста, и я надеюсь, что решение тоже будет.

Так что в основном у меня есть два файла конфигурации application.conf и dev.conf.Я передаю свои файлы конфигурации из командной строки следующим образом: sbt -Dconfig.file=dev.conf.

Проблема в том, что я использую ConfigFactory.load из основного объекта (тот, который extends App), он загружает конфигурацию, которую я передал через командную строку(в данном случае dev.conf), но когда я загружаю конфиг из другого объекта, он загружает значение по умолчанию application.conf.

Можно ли как-то загрузить конфиг, переданный из аргументов любого объекта?

1 Ответ

0 голосов
/ 24 декабря 2018

Когда вы запускаете приложение с задачей runMain SBT, по умолчанию SBT не создаст отдельную JVM для вашего кода.Это имеет несколько последствий для жизненного цикла приложения и, конечно же, для системных свойств.

В целом ваш подход должен работать, пока конфигурация сборки не включает разветвление .Тем не менее, я думаю, что лучшим подходом было бы полагаться на разветвление и явно указывать системное свойство.Это гарантированно работает.Для этого вам необходимо установить для параметра fork в задаче run значение true, а затем добавить параметр командной строки JVM:

Compile / run / fork := true,
Compile / run / javaOptions += "-Dconfig.file=dev.conf",

Не забудьте перезапустить SBT послетот.При таком подходе вам не нужно передавать свойство config.file в SBT;скорее это управляется настройкой javaOptions, как в примере выше.

...