在 playframework 中重新加载自定义文件更改的应用程序

Posted

技术标签:

【中文标题】在 playframework 中重新加载自定义文件更改的应用程序【英文标题】:Reload app on custom file change in playframework 【发布时间】:2012-04-30 21:34:55 【问题描述】:

在 playframework 中有自动重新加载功能。这意味着在每个请求的开发模式下,play 都会检查文件的变化,并在必要时重新编译和重新加载项目。因此,例如,如果我 $ touch conf/routes,项目将在下一次请求时重新加载。

我想添加一些自定义文件以供关注。

我相信watchSources 设置包含正在播放的文件列表。但这对我不起作用。考虑一下,我们想将trigger 文件添加到观看的源中。

watchSources <+= baseDirectory map  _ / "trigger" 

已成功添加到观看源

[sbt console] $ show watch-sources
[info] List(/* trigger appears in list */)

但 play 会忽略 trigger 的更改并且不会重新启动应用程序。我错过了什么?如何让播放监视自定义文件更改?

【问题讨论】:

也许这是一个愚蠢的问题,但你是否记得在编辑 Build.scala 后做一个play reload 尝试清理、重新加载、移至 2.1-SNAPSHOT。我开始认为所有观看的文件都被硬编码在 PlayReloader 的某个地方 sbt 文档正在讨论watch 设置:github.com/harrah/xsbt/wiki/Triggered-Execution。但我在 wiki 中找不到有关该设置的更多信息。 @Li-o, watch-sources 适用于普通的 sbt 项目,但 play 依赖于自己的花哨 PlayReloader,覆盖标准行为。 @4e6,如果您将文件添加到watchSources 并执行~run 命令,它会检测到该文件的更改。这似乎在PlayLoader:github.com/playframework/Play20/blob/master/framework/src/… 中明确编码 【参考方案1】:

我从来没有尝试过这样做,但经过调查,我注意到了

watchSources <+= confDirectory map  _ / "routes" 

自然指向 conf (conf/routes) 中的路由文件。是不是忘了把文件“trigger”放到conf(conf/trigger)中?

【讨论】:

我怀疑自动重新加载将适用于conf 目录中的每个文件,甚至没有在watchSources 中列出,因为PlayReloader 中的这些行

以上是关于在 playframework 中重新加载自定义文件更改的应用程序的主要内容,如果未能解决你的问题,请参考以下文章

手动调用 PlayFramework 自定义错误页面

Log4j 自定义配置为每个级别分隔日志 - Playframework 1.2.5

如何在 UICollectionView 中强制重新加载自定义单元格?

每种错误类型的 PlayFramework Application 2.7.x 自定义错误页面

Colorbox - 在颜色框内容中删除自定义 iframe 时防止父页面重新加载?

在 Laravel 中重新加载自定义 .env 文件后如何更改存储设置?