将 play 作为库嵌入,我在我的项目中启用了 sbt-web 插件,并运行web-stage
,使资产逐字复制到target/web/stage/
. 但是,使用 Play Framework 的字符串插值路由 DSL如下,当匹配请求进来时,它们不会被服务:
object PlayServer extends App {
val server = NettyServer.fromRouter() {
case GET(p"/public/$file*") => {
val path = "/target/web/stage"
Assets.at(path = path, file = file)
}
}
通过播放代码处理Assets.at
进行调试,看起来没有任何东西将资产变成资源target/scala-2.11/classes/
,大概是播放框架试图将它们作为资源加载。跑步sbt web-stage
并没有特别注意这一点。
那么 sbt-web 管理将资产放在那里时缺少什么?当手动放置在那里时,集成工作!因此,就 Play 而言,默认配置中的 sbt-web 似乎将资产放置在错误的目标子目录中......
请注意,plugins.sbt
我只包含来自 sbt-web 的以下内容,这是否足够?
addSbtPlugin("com.typesafe.sbt" % "sbt-web" % "latest.release")