如何不查看文件以了解 Play 框架中的更改

Posted

技术标签:

【中文标题】如何不查看文件以了解 Play 框架中的更改【英文标题】:How to not watch a file for changes in Play Framework 【发布时间】:2015-03-16 05:43:54 【问题描述】:

在编译项目时使用sbt-buildinfo 创建BuildInfo.scala 文件的Play Framework 2.2 项目上,如何配置build.sbt 以使Play Framework 不会监视BuildInfo.scala 文件的更改,并且如果该文件更改不会重新启动服务器?

例如,如果会话开始于:

$ sbt ~run

服务器以开发模式启动,然后在另一个终端窗口中启动另一个sbt会话(运行另一个子项目,或者只是运行其他sbt任务),这第二个sbt会话将更新BuildInfo.scala 文件,第一个 sbt 会话将检测到这一点并重新加载 Play 项目。

所以问题是如何从监控中排除BuildInfo.scala(但仍然编译它并将其包含在分发包中)。

显然watchSources 配置选项可能会有所帮助,但在阅读了文档后,我无法弄清楚如何使用它来排除文件。

【问题讨论】:

你试过watchSources := watchSources.value.filter _.getName != "BuildInfo.scala" 吗?我试图重现基本设置,但对我而言,BuildInfo.scala 文件未被观看(您可以通过show watchSources 检查您的设置)。 我能够从 watchSources 中过滤出一个文件:val myProject = play.Project(/*etc*/).settings(/*etc*/ watchSources := watchSources.value.filter _.getName != "FileName.scala" )。您使用show watchSources 的提示也有帮助。我建议您输入它作为答案,我会批准它。它回答了我在这个问题中提出的问题,但并没有解决我的问题,因为我发现BuildInfo.scala 不在watchSources 中(它在src_managed/ 中,不在watchSources 中),所以当我打开第二个会话时,该项目必须出于其他原因重新启动。 【参考方案1】:

要删除特定文件,您可以在 build.sbt 中执行以下操作:

watchSources := watchSources.value.filter  _.getName != "BuildInfo.scala" 

我试图重现基本设置,但对我来说 BuildInfo.scala 文件没有被观看。你可以通过show watchSources查看观看的来源列表。

【讨论】:

那么,如何排除一个文件夹,以便 Play Framework 不会监视该文件夹中的任何文件进行更改? 要排除整个文件夹被监视,您可以使用 watchSources := (watchSources.value --- baseDirectory.value / "your-folder-here" ** "*").get

以上是关于如何不查看文件以了解 Play 框架中的更改的主要内容,如果未能解决你的问题,请参考以下文章

如何让 Squeryl 与 Play 一起工作!框架?

如何查看电脑里的文件信息?C语言lstat函数知识点

我们如何查看 Google Play 服务中的排行榜详情?

使用 git 查看对特定文件的更改

无法使用 Play 框架连接到数据库

如何查看文件的更改?