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 中的更改