版本:
- play 2.3.4
- sbt 0.13.1
- scala 2.11.2
我已经按照 playframework.com 的文档 开启了公共资产的指纹识别,但对 routes.Assets.versioned
的调用从未生成带有摘要哈希值的版本化文件名。
build.sbt 中相关行:
scalaVersion := "2.11.2"
pipelineStages := Seq(rjs, digest)
项目/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")
conf/routes中相关的行:
GET /assets/*file controllers.Assets.versioned(path="/public", file: Asset)
而且主模板:
@(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>
输出始终为:
<!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>
我没有编译器错误,但指纹识别“不起作用”。我想我可能缺少一些简单的东西,但我看不见。
其他注意事项:
- 在项目根目录下运行
find . -name "*.js"
,没有文件名前附加摘要,如文档所示 - 我已经运行了
sbt clean dist
以生成生产模式发布,但行为相同
有人能提供建议吗?
谢谢!
NB:我已经开始查看target/src_managed/main/routes_reverseRouting.scala
中生成的类,以调试生成的versioned
方法,但这似乎对于相当简单的事情来说过于复杂了。