如何在Play Framework 2.3.2中拥有多个/ public目录?

时间:2014-07-24 00:27:56

标签: playframework-2.0

我们正在将应用从Play 1.2.7迁移到Play 2.3.2。

因为我们之前已将大部分Play 1.2.7应用程序从Backbone迁移到AngularJS,所以我们在1.2.7中最终得到了两个静态资产目录:

/public -- contains Backbone scripts/templates
/platform/app -- contains AngularJS scripts/templates

我试图在不破坏1.2.7代码的情况下并行进行迁移,所以我有类似的东西,所以我可以在/ app中重写Java控制器,并使用现有的JavaScript / HTML资产:

~/play1/app
~/play1/public
~/play1/platform/app

~/play2/app
~/play2/public (symlink to ../../play1/public)
~/play2/platform (symlink to ../../play1/platform)

当我执行激活器运行时,即使我有一条路由,也无法访问/ play2 / platform中的文件。调查一下,这些文件都没有被复制到〜/ play2 / target / public,所以controller.Assets没有找到它们。 Play / SBT中有没有办法做到这一点?

我假设我可以在构建发行版时以某种方式让脚本执行副本(我需要查看),但我希望这只能用于交互式开发。

这可能是补救措施,但我是Play 2.x,Scala和SBT的新手,所以我还没有能够解决这个问题。

谢谢,

查尔斯

1 个答案:

答案 0 :(得分:6)

Play 2.3 migration guide在sbt-web部分讨论了这个问题。

  

sbt-web的细微差别在于所有资产都是从公共文件夹提供的。因此,如果您之前有资产驻留在公用文件夹之外,即您使用playAssetsDirectories设置,则按照以下示例:

     

playAssetsDirectories< + = baseDirectory /" foo"   ...那么你现在应该使用以下内容:

     资产中的

unmanagedResourceDirectories = = baseDirectory.value /" foo"

当我在Play Java项目的根目录中添加build.sbt时,这对我有用:

unmanagedResourceDirectories in Assets += baseDirectory.value / "platform/app"