如何删除ScalaTest/sbt/Intellij中运行之前的目录?

How do you delete a directory before running in ScalaTest/sbt/Intellij?

我目前正在为我的 Scala 2.11.8 项目使用 ScalaTest 3.0.1,并将 sbt 0.13.18 作为构建工具。 IDE 是 Intellij。

该项目是一个 Spark 项目,我在 root/temp/ 使用一个临时目录作为检查点和仓库。当我 运行 测试多次时,检查点会不断添加,最终达到非常大的尺寸。我想在测试 运行s 之后保留检查点,以便它们可以用于验证,但我想在下一个 运行.

之前删除它们

如何在 Intellij 中使用 sbt 和 ScalaTest 完成此操作?

我一直在考虑在 build.sbt 中使用我的临时目录设置一个 sbt clean,但我似乎无法删除该目录,阅读文档提示它会只删除 sbt 创建的文件,所以我放弃了这个想法。

我目前正在考虑将我的 ScalaTest 设置为有一个将删除目录的 BeforeAll 事件,但我不确定这是正确的方法,而且我在让它工作时遇到了问题.

基于clean可以包括temp目录

cleanFiles += baseDirectory.value / "temp"

另一种选择是创建一个自定义任务来清理 temp,例如使用 better-files

lazy val deleteTestTemp = taskKey[Unit]("Delete test temp directory")
deleteTestTemp := {
  import better.files._
  val temp = (baseDirectory.value / "temp").toScala
  if (temp.exists) temp.delete()
}

其中 project/plugins.sbt 包含

libraryDependencies += "com.github.pathikrit" %% "better-files" % "3.9.1"

我们可以像这样清理然后测试

deleteTestTemp;test