scala - 播放框架 : how to not watch a folder for changes in Play Framework

标签 scala sbt playframework-2.2

我正在使用 Play 2.2.3。
我是 Play 和 SBT 的新手。我想让 Play 在开发过程中不看文件夹。在这种情况下,公用文件夹下的 node_modules 文件夹。
我在下面尝试了这些,但似乎没有用。另外,我不知道 watchSources 和 playMonitoredFiles 之间有什么区别。

    .settings(
  playMonitoredFiles <<= playMonitoredFiles map { (files: Seq[String]) =>
    files.filterNot(file => file.contains("node_modules"))
  }
)
.settings(
  watchSources <<= watchSources map { (sources: Seq[java.io.File]) =>
    sources
      .filterNot(source => source.isFile && source.getPath.contains("node_modules") )
      .filterNot(source => source.isDirectory && source.getPath.contains("node_modules"))
  }
)
.settings(
  watchSources := watchSources.value.filter { !_.getPath.contains("node_modules")  }
)

最佳答案

备注 :最初的问题是关于旧版本 (2.2.3),但是我发现同样的问题对于现代版本很有用。
所以基本上 watchSources 是用于 triggered-execution 的 SBT key 功能。
相反,播放监控文件 是由 PlayFramework sbt-plugin 定义的 TaskKey,它控制一组要观看的目录
用于自动重新加载功能的开发服务器(sbt run)。
启动 sbt 运行时,对于每个请求,都会检查 playMonitoredFiles 定义的目录,如果发现任何更改,
触发静默重新编译。这意味着关闭服务器,重新编译并重新启动。
playMonitoredFiles 的默认值在 playMonitoredFilesTask 中计算.
例如,我们将某个版本文件添加到我们的资源中,并在每次编译时计算。我们需要 PlayFramework 来避免检查此文件的更改
在开发中,因为在每次请求时,自动重新编译都会重新生成此文件并播放标记要再次重新编译的源,但是没有重新编译java文件并且
没有打印出任何内容,因此我们必须调试应用程序才能找到问题。
此设置仅适用于开发服务器(sbt run)。
中的项目设置中build.sbt ,可以覆盖任务以排除目录(在示例中,目标/版本目录):

.settings(
...,
playMonitoredFiles := playMonitoredFiles.value.filterNot {
    _.getPath() endsWith String.format("target%sversion", File.separator)
  }
...,
)
该值属于文件类型,仅包含目录。

关于scala - 播放框架 : how to not watch a folder for changes in Play Framework,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/28709840/

相关文章:

java - Play! 中的网页是如何生成的?框架?

sbt - 如何在 “test”(集成测试)配置中使 “it”类可用?

scala - 无法在 IntelliJ + sbt-idea-plugin 中调试 Scala 应用程序

java - 聚合/存储字段和异步作业

playframework-2.0 - 在浏览器中显示来自 Controller 的图像对象

scala - object.type 不带参数错误

scala - 如何传递带有隐式参数的函数

scala - 可堆叠特征模式: method's implementation “needs ` abstract override' modifiers”

scala - 使用 .ivy2 缓存的副本作为 SBT 解析器源

playframework - Play Framework 模块 vs 子项目