2015-11-12 6 views
0

У меня есть проект Scala с многочисленными зависимостями. Один из них требует настройки, которая не находится в ее собственном application.conf, но в приложении application.conf другой зависимости. Когда я запускаю проект с sbt run, все в порядке, однако, когда я запускаю упакованную службу deb или скрипт bin из target/universal/stage/bin, я получаю сообщение об ошибке: com.typesafe.config.ConfigException$Missing: No configuration setting found for key 'roadmaps'. Две зависимости имеют этот параметр в application.conf внутри их банок. Когда я переместил настройку из application.conf в reference.conf и повторно опубликовал зависимость, затем повторно упаковал свой проект, работала упакованная версия. Итак, почему моя настройка не выбрана из application.conf в банке зависимости и почему именно мне следует сохранить конфигурацию библиотеки в reference.conf, кроме того, что она имеет самый низкий приоритет среди файлов конфигурации?sbt-native-packager, связанная с зависимостью проекта, не может найти значение конфигурации

+0

Можете ли вы дать минимальное 'build.sbt' воспроизведение этого? Это больше похоже на проблему с конфигурацией (если отсутствует ключ конфигурации). Оформить заказ https://github.com/typesafehub/config и отладить свою конфигурацию, чтобы узнать, куда приходят отсутствующие ключи, если вы запустите приложение с помощью 'sbt run'. – Muki

+0

У меня есть ключ «дорожных карт» в application.conf в двух баночках с зависимостями (он одинаковый в обоих файлах). Почему он не подхвачен упакованным сервисом? – Yar

+0

Несколько 'application.conf' возможно загружаются по-разному во время выполнения. Отлаживайте конфигурацию типов, когда и откуда загружается материал. – Muki

ответ

1

-Dconfig.trace=loads помог мне найти ответ. Когда I sbt run проект, который выполняет другие проекты, он сначала загружает свои собственные application.conf, а затем те, которые упакованы в банки с его прямыми зависимостями (здесь и происходит настройка 'roadmaps'), затем reference.conf s зависимостей. Когда я добавляю bashScriptExtraDefines += """addJava "-Dconfig.file=${app_home}/../conf/application.conf"""" в build.sbt, упакуйте проект с stage и запустите его из сценария в target/universal/stage/bin, он загружает только указанный application.conf, а затем переходит к reference.conf s.