【问题标题】:How to have more than 1 /public directory in Play Framework 2.3.2?如何在 Play Framework 2.3.2 中有多个 /public 目录?
【发布时间】:2014-07-24 00:27:55
【问题描述】:

我们正在将应用从 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 的新手,所以我还没有弄清楚。

谢谢,

查尔斯

【问题讨论】:

    标签: playframework-2.0


    【解决方案1】:

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

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

    playAssetsDirectories

    资产中的 unmanagedResourceDirectories += baseDirectory.value / "foo"

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

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

    【讨论】:

      猜你喜欢
      • 2015-05-09
      • 1970-01-01
      • 2014-10-24
      • 1970-01-01
      • 2012-12-12
      • 2013-10-28
      • 1970-01-01
      • 2015-05-12
      • 1970-01-01
      相关资源
      最近更新 更多