获取Play框架以在资源托管中提供生成的文件

时间:2014-01-20 15:21:45

标签: playframework-2.0

我使用sbt-js

https://github.com/untyped/sbt-plugins/tree/develop/sbt-js

生成我所有javascript文件的压缩连接

sbt-js生成的压缩文件最终出现在* resource_managed *目录

(目标/ scala2.10 / resource_managed /主/ all.js)

现在我需要让Play来提供这个文件,似乎我需要创建一个 它的路线,但无法弄清楚哪一个,我尝试过这个变种:

GET /assets/all.js  controllers.Assets.at(path="/resource_managed/main", file="all.js")

没有成功。

1 个答案:

答案 0 :(得分:0)

resource_managed / main的(已知)内容放在类路径的根目录中,所以如果你正在做什么就行,那就是Assets.at(path =“/”,file =“all.js”)< / p>

坏消息是,resource_managed是为播放资产编译器生成的文件保留的,那些实际返回的是每个输出的文件,以便play / sbt知道该文件。因此,要使其工作,您需要将sbt-js-compilation设置为资产编译器,并将其包含在播放资产编译器中。

好消息是,有一种非托管资源的概念可以是你想要的任何东西。要使用它,您需要在SBT配置中设置键unmanagedResourceDirectories,例如:

val myCompiledJsDir = SettingsKey[File]("js-output-dir", "Where my js is compiled to")

val myJsSettings = Seq(
    myCompiledJsDir <= target(_ / "my-js-output"),
    (unmanagedResourceDirectories in Compile) <+= myCompiledJsDir
)

然后将myJsSettings附加到您的游戏项目

val main = play.Project(appName, appVersion, Dependencies.all).settings(
   ...
).settings(myJsSettings: _*)

这应该可以让你的编译js很好,你添加的目录将被添加到类路径根目录,并将打包到play dist zip文件等。