2016-04-07 7 views
0

Embedding play as a library Я включил плагин sbt-web в своем проекте и запустил web-stage, сделав активы скопированными до target/web/stage/. Однако при использовании Play фреймворка string interpolation routing DSL следующим образом, они не служили, когда запрос на согласование приходит в:Play Framework sbt-web integration без игрового плагина

object PlayServer extends App { 
    val server = NettyServer.fromRouter() { 
     case GET(p"/public/$file*") => { 
     val path = "/target/web/stage" 
     Assets.at(path = path, file = file) 
    } 
} 

Отладка через код игры handling Assets.at, похоже, ничего не приносит активы находящихся ресурсов под target/scala-2.11/classes/, где предположительно играют рамки пытается загрузить их в качестве ресурсов. Бег sbt web-stage не позаботится об этом конкретно.

Итак, что не хватает для управления sbt-web, чтобы позаботиться о размещении там активов? Когда ручная установка там, интеграция работает !! поэтому кажется, что sbt-web в своей конфигурации по умолчанию помещает активы в неправильный целевой подкаталог в отношении Play ...

Обратите внимание, что в plugins.sbt я включаю только следующее из sbt-web, должно быть достаточно ?

addSbtPlugin("com.typesafe.sbt" % "sbt-web" % "latest.release") 

ответ

0

Размещение активов под /src/main/resources/assets/ получает их скопировать в target на ход, обходя любые фантазии SBT-веб-обработки. Это выталкивает вас из грязи для базового разработчика.

маршрут должен адаптировать так:

case GET(p"/public/$file*") => { 
    val path = "/assets" 
    Assets.at(path = path, file = file) 
} 

Настройка надлежащего SBT-веб трубопровода для минификация или что-то не может, в конечном счете избежать, следовательно, это не совсем ответ, но он решает определенное использование в случае использования игр для внутренних приложений.