【问题标题】:How to exclude a folder from compilation如何从编译中排除文件夹
【发布时间】:2015-06-04 23:14:20
【问题描述】:

在我们的 Play 项目中,我们遇到了这个问题。

当我们运行 javascript 测试时,它会触发 scala 源代码的编译。

所有 javascripts 测试都在 test/assets 下,并且此路径内的任何更改都不应触发源代码的编译。

这意味着该文件夹在某处被称为源目录。我试图查看可以在哪个 sbt 属性中引用此文件夹,但没有找到。

任何人都可以提供一些关于如何防止在此文件夹中的文件更改时触发编译的线索吗?

【问题讨论】:

  • 不是解决方案,但另一个数据点是将文件夹重命名为“donotcompile”或其他任何内容,看看问题是否仍然存在。换句话说,“测试”这个名称是否重要?
  • 如果你在 sbt/activator 控制台中运行 show unmanagedSourceDirectoryshow unmanagedResourceDirectory 会列出测试目录吗?您确定在运行 js 测试时仅更改该目录吗?顺便说一句,你用什么来运行你的 js 测试?
  • 当我运行这些命令时,没有显示测试目录。这就是为什么我不知道为什么它会导致编译。我试图检查其他 sbt 属性,但在任何地方都找不到测试目录的参考。我没有检查所有这些,只检查了明显的那些。我们的 js 测试使用 grunt 运行。我们所有的资产都由 grunt/gulp not play 管理。
  • 在 SBT 中,密钥通常被限定为特定的配置或任务,因此“show show test:sourceDirectories”将显示“test”是测试的源目录之一,但不确定它们为什么会触发编译.
  • 添加到@johanandren 评论,您还可以尝试查看SBT 是否出于某种原因认为它是源(不是测试源),所以使用show sourceDirectories 而不将其范围限定为test。 (或尝试将其明确限定为compilerun)。最后,像您这样的案例证明了新范围的合理性。所以我建议你关注:Custom test configuration

标签: playframework sbt


【解决方案1】:

watchSources 任务似乎包含跟踪更改的文件。要检查文件夹/文件列表,请在 sbt 中键入以下内容:

>show watchSources

我不确定这是否是最简单的解决方案,但它会从watchSources 中删除test/assets

watchSources <<= watchSources.map{
    t => t.filterNot(x => x.getCanonicalPath.endsWith("test/assets"))
}

【讨论】:

  • 有人看到sbt 1.0.x的解决方案吗?
猜你喜欢
  • 2016-11-23
  • 2023-04-10
  • 1970-01-01
  • 1970-01-01
  • 2019-06-19
  • 1970-01-01
  • 1970-01-01
  • 2018-02-06
相关资源
最近更新 更多