2013-06-01 2 views
2

У нас есть сложное приложение, построенное с использованием платформы воспроизведения. Приложение разделено на отдельные части. Веб-сайт, сканеры и все остальные используют похожие классы и файлы конфигурации. Чтобы исправить это, мы централизовали их в папку в корне приложения воспроизведения.Play framework config включает перерывы с dist

В разработке инструкция import для классов и оператора include для загрузки нескольких файлов конфигурации работает нормально. В производстве мы использовали для развертывания дист-версию кода, но включенные, которые все имеют относительные пути, перестали работать.

Мы попробовали -Dconfig.file загрузить родителя. Этот файл был добавлен в созданную папку zip, но включенные файлы не были найдены.

У кого-нибудь есть идея о том, как «скомпилировать» или централизовать файлы конфигурации для воспроизведения, чтобы загрузить их все?

Благодарим за помощь.

+0

Мы используем sbt-assembly в нашем проекте для упаковки нашего приложения. Затем, когда он будет развернут, мы поместим папку конфигурации в classpath и загрузим конфигурацию из этой папки. надеюсь, это поможет – vitalii

ответ

1

У меня была такая же проблема, я обнаружил, что мне нужно указать полный путь для -Dconfig.file, так что включительная часть в нем будет работать.

т.е.

/path/to/dir --> 
    production.conf = {include "application.conf" and some overrides} 
    start 
    my-app/ 

./start -Dconfig.file =/путь/к/каталогу/production.conf

редактировать в игре 2.2 распространяемый структура зип изменилась, есть теперь бин реж с именем приложения сценария в нем, так:

/path/to/dir --> 
    production.conf = {include "application.conf" and some overrides} 
    bin/my-app 

    ./bin/my-app -Dconfig.file=/path/to/dir/production.conf 
+0

Привет, это не работает для нас, потому что config содержит несколько включений. Первая конфигурация добавляется в zip, но остальные забываются. – Philippe

+0

Все еще происходит на 2.3. Такое поведение не документируется и часто ломается при развертывании на производстве. Это хорошая причина для этого? – Renan

0

так что я четко не понимаю, как это работает, но я попытаюсь объяснить большую картину.

Чтобы разрешить нескольким проектам использовать «внешние» файлы конфигурации, мы создали другой проект. Этот новый проект является своего рода библиотекой. Он содержит все объекты, используемые в нескольких проектах и ​​конфигурационных файлах.

Каждый проект имеет этот «основной» проект как зависимость. Это позволяет играть, когда мы просим его создать дистрибутивный пакет, чтобы объединить весь код в один ZIP-файл.

Надеюсь, это поможет.

Смежные вопросы