Play Framework 未获取对公共文件的更改

Posted

技术标签:

【中文标题】Play Framework 未获取对公共文件的更改【英文标题】:Play Framework not picking up changes to public files 【发布时间】:2015-09-30 09:43:29 【问题描述】:

我正在使用 scala play 框架 [2.4.2] 使用 Angular 构建单页应用程序的后端。我将所有前端的东西都放在自己的文件夹中,并且正在使用 gulp.js 编译和最小化资产。

每次更改后,我的前端都会重新编译成

 /ui/dist/assets

我已将此添加到我的 build.sbt

unmanagedResourceDirectories in Assets += baseDirectory.value / "ui/dist/assets"

然后在我的路线中我这样做:

GET         /assets/*file                        controllers.Assets.at(path="/public", file)

这一切都很好,除非我对文件进行了更改并且它们被重建播放不会找到新文件。它们将存在于 ui assets 目录中,但我的浏览器中会出现 404 错误。重新开始播放将修复它,如果播放增量编译(当 gulp 运行时没有完成),那么一切正常。

文档提到资产被打包到应用程序 Jar 文件中,并且在重建之前它会出错是有道理的。但是有没有办法强制这样做?自动增量器不接受更改。

【问题讨论】:

【参考方案1】:

呃,所以我在尝试找到一个可以将另一个文件夹添加到 play 类路径的解决方案时遇到了很多麻烦。无论如何这并不理想,因为开发人员明确不希望类路径中的资产

想出了这个技巧。本质上只是触摸类路径中的文件,强制重新加载。

构建后在我的 gulpfile 中:

gulp.task('reload', [], function() 
  fs.closeSync(fs.openSync('../conf/test', 'w'));
);

【讨论】:

以上是关于Play Framework 未获取对公共文件的更改的主要内容,如果未能解决你的问题,请参考以下文章

Play Framework [2.4.x] 如何在子模块的路由文件中处理公共资产

使用 dist 命令后在哪里放置 play framework 的公共目录

Play Framework:如何不查看文件夹以了解 Play Framework 中的更改

Play Framework 2.0 中公共字段的使用

未解决的依赖关系 sbt with play framework

Play Framework 2.6 中未触发 Slick (postgresql) 演变