Возникли проблемы с доступом к расположению скомпилированных ресурсов в рабочей среде.
Моя стратегия заключалась в том, чтобы обслуживать мои активы в «app/assets/ui», когда они находятся в разработке, и «public», когда они находятся в производстве. Это делается, как показано ниже в моем файле conf/routes.
#{if(play.Play.mode.isDev())}
GET /assets/*file controllers.common.Assets.at(path="/app/assets/ui", file)
#{/}
#{else}
GET /assets/*file controllers.common.Assets.at(path="/public", file)
#{/}
Поскольку я определил сопоставление активов вне «общедоступного», я добавил следующую строку в свой Build.scala.
playAssetsDirectories <+= baseDirectory / "app/assets/ui"
Например, мои скрипты загружаются условно в зависимости от среды, как показано ниже.
@if(play.Play.isDev()) {<script src="@routes.Assets.at("/app/assets/ui", "javascripts/application.js")"type="text/javascript"></script>} else {<script src="@.routes.Assets.at("/public", "javascripts/application.min.js")" type="text/javascript"></script>}
Я использую Grunt для своего внешнего рабочего процесса, и когда приложение создает его, оно копирует файлы дистрибутива в общую папку приложения. Я запускаю приложение в рабочей среде, используя "sbt clean compile stage", а затем запускаю упакованное приложение.
Моя проблема заключается в том, что маршруты по-прежнему относятся к папке «app/assets/ui», а не к «общедоступной» папке дистрибутива.
Любые советы о том, как я могу отладить это? Мой опыт работы — фронтенд-разработчик, поэтому я новичок в Play! и скала.