如何在Play 2.3.4中设置资产指纹识别?

bie*_*gel 16 scala playframework playframework-2.3

版本:

  • 玩2.3.4
  • sbt 0.13.1
  • 斯卡拉2.11.2

我已经按照playframework.com上的文档来启用公共资产上的指纹识别,但调用routes.Assets.versioned永远不会产生带有摘要哈希的版本化文件名.

build.sbt中的相关行:

scalaVersion := "2.11.2"
pipelineStages := Seq(rjs, digest)
Run Code Online (Sandbox Code Playgroud)

project/plugins.sbt中的相关行:

addSbtPlugin("com.typesafe.play" % "sbt-plugin" % "2.3.4")
addSbtPlugin("com.typesafe.sbt" % "sbt-rjs" % "1.0.5")
addSbtPlugin("com.typesafe.sbt" % "sbt-digest" % "1.0.0")
Run Code Online (Sandbox Code Playgroud)

conf/routes中的相关行:

GET    /assets/*file    controllers.Assets.versioned(path="/public", file: Asset)
Run Code Online (Sandbox Code Playgroud)

主模板:

@(title: String, lang: String, cssClasses: String, bodyContents: Html)
<!DOCTYPE html>
<html lang="@lang">
  <head>
    <meta charset="UTF-8">
    <title>@title</title>
    <script type="text/javascript" src="@routes.Assets.versioned("javascript/components/main.js")"></script>
  </head>
  <body>
    <div class="layout @cssClasses">
    @bodyContents
    </div>
  </body>
</html>
Run Code Online (Sandbox Code Playgroud)

输出总是:

<!DOCTYPE html>
<html lang="el">
<head>
  <meta charset="UTF-8">
  <title>[title]</title>
  <script type="text/javascript" src="/assets/javascript/components/main.js"></script>
</head>
<body>
...
</body>
</html>
Run Code Online (Sandbox Code Playgroud)

我没有编译错误.指纹只是"不起作用".我想我错过了一些简单的东西,但我看不到它.

其他说明:

  • find . -name "*.js"如文档所示,在项目的根目录中运行时,没有显示在开头附加摘要的文件
  • 我已经开始sbt clean dist生成生产模式发布,行为是一样的

任何人都可以建议吗?

谢谢!

注意:我已经开始查看生成的类target/src_managed/main/routes_reverseRouting.scala来调试生成的versioned方法,但这似乎有些过于简单.

Mar*_*ier 8

首先,您应该更新到sbt 0.13.5,因为sbt-web及其插件使用0.13.5中引入的名为"auto-plugins"的sbt功能.

顺便说一句,资产管道在开发模式下没有触发,你必须通过测试sbt start(或者sbt dist需要更多时间).

versioned方法仅检查资产是否具有.md5后缀的伴随.您应该检查这些文件是否存在target/web.


tfh*_*tfh 8

据我所知,几个星期前我遇到了同样的问题.将资产路线更改为:

GET   /web/assets/*file   controllers.Assets.versioned(path="/public", file:Asset)
Run Code Online (Sandbox Code Playgroud)

(参见" file:Asset" - Asset如果我没记错的话似乎需要" ")

  • 我们指定了`Asset`类型,但结果是一样的 (3认同)