如何不查看文件以了解 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 框架中的更改的主要内容,如果未能解决你的问题,请参考以下文章