Мы находимся в процессе обновления приложения от Play 2.3 (.10) до Play 2.4 (. 6). В среде разработки активы обнаруживаются и развертываются, как ожидалось. Однако в развертывании это не так. Мы используем sbt-native-packager 1.1.1 и activator clean stage
на этапе построения. Сгенерированные файлы работают, но активы не копируются в каталог /public
в любом из сгенерированных JAR. Вместо этого, я нахожу их в некоторых каталогах,Активы не упакованы в «public /», но ниже «META-INF /.../» в Play 2.4
META-INF/resources/webjars/<project>/
<branch>-<commit>-<builddate>/javascripts/jquery-2.1.1.min.js
в созданном <projectname>-assets.jar
файле. В Play 2.3 этот JAR содержит файл сверху
public/javascripts/jquery-2.1.1.min.js
как ожидалось.
В результате активы не найдены, и отправлена ошибка 404. Маршрут обычный
GET /assets/*file controllers.Assets.at(path="/public", file)
В шаблонах, актив ссылаются как
<script type="text/javascript" src="@routes.Assets.at("javascripts/jquery-2.1.1.min.js")"></script>
, которая ведет - как и ожидалось - к
<script type="text/javascript" src="/assets/javascripts/jquery-2.1.1.min.js"></script>
в генерируемый HTML отображается в браузере , Из того, что я вижу, все точно описано в документации. В среде разработки все работает. Но после развертывания куски не собираются вместе ...
Что здесь происходит? Почему я получаю что-то с «webjars» на пути, когда мы вообще не используем webjars? Почему активы не являются «общедоступными»? Как я могу заставить это работать? Есть ли какой-нибудь плагин или sbt-настройка?
UPDATE 2016-06-02
В то же время мы обнаружили, что активы являются фактически генерируются правильно в первую очередь:
[info] Packaging /home/xy/workspace/<project>/target/<project>-<version>.jar ...
[debug] Input file mappings:
[debug] public/javascripts/ckeditor/plugins/a11yhelp/dialogs/lang/fr-ca.js
[debug] /home/xy/workspace/<project>/public/javascripts/ckeditor/plugins/a11yhelp/dialogs/lang/fr-ca.js
Позже в stage
процессе, однако , тот же файл сгенерирован снова - и теперь с неправильным расположением файлов:
[info] Packaging /home/xy/workspace/<project>/target/<project>-<version>.jar ...
[debug] Input file mappings:
[debug] META-INF/resources/webjars/<project>/<version>/javascripts/ckeditor/plugins/a11yhelp/dialogs/lang/fr-ca.js
[debug] /home/xy/workspace/<project>/public/javascripts/ckeditor/plugins/a11yhelp/dialogs/lang/fr-ca.js
Я уже тестировал вручную модифицировать файл JAR после завершения сборки сборки sbt: если я переместю этот каталог META-INF/resources/webjars/<project>/<version>
в простой public/
и переупаковываю JAR (внешний sbt), все работает отлично. Итак, у меня есть мой «план Б», но я бы очень хотел понять: (а) почему sbt работает неправильно здесь и (б) как правильно его эксплуатировать ...