【问题标题】:How to filter files that sbt watches for changes?如何过滤 sbt 监视更改的文件?
【发布时间】:2021-05-04 10:55:18
【问题描述】:

我使用 emacs 作为我的编辑器,它有一个讨厌的习惯,即为这些文件附近的文件创建锁。似乎 sbt 也将该锁视为源文件,这会导致许多不必要的重建。

有没有办法告诉 sbt 它不应该监视以.# 开头的文件中的更改?

我尝试了一些类似的方法:

watchSources in Compile <<= (watchSources in Compile) map { files =>
  println(files)
  files.filter(f => !f.getName.startsWith(".#"))
}

但它不起作用。

【问题讨论】:

    标签: scala sbt


    【解决方案1】:

    如果我将以下行添加到ApplicationBuild 内的project/Build.scala,SBT 会忽略 Emacs 自动保存模式文件:

    excludeFilter in unmanagedSources := ".#*"
    

    在较新的 sbt 语法中,即:

    unmanagedSources / excludeFilter := ".#*"
    

    【讨论】:

    • 此解决方案在 build.sbt 文件中使用时似乎也有效。
    【解决方案2】:

    watchSources 不用作范围设置。在没有in Compile的情况下重写您的示例,它会起作用。

    【讨论】:

    • 它似乎部分工作 - 至少打印了正确的文件名。但似乎 sbt 在创建新的“.#”文件时也会触发重新加载,并且它没有通过“watchSources”传递。有没有办法告诉它不要在新创建的带有该前缀的文件上触发重建?
    猜你喜欢
    • 2011-04-21
    • 2020-02-03
    • 1970-01-01
    • 2020-08-10
    • 2011-06-18
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多