假设我有一个Scala程序,它创建以.foo
.结尾的文件.
我正在构建,sbt
并希望在sbt clean
调用时删除这些文件.
在SBT构建中添加额外的目录以清除任务显示可以添加单个文件
cleanFiles <+= baseDirectory { _ / "test.foo" }
Run Code Online (Sandbox Code Playgroud)
但是,目前还不清楚如何扩展这个:
cleanFiles <append> <*.foo>
Run Code Online (Sandbox Code Playgroud)
所有.foo
文件都在同一目录中,因此我不需要递归检查目录.虽然,这也很有趣.
sbt
清除与通配符或正则表达式匹配的文件?sbt clean
删除程序生成的文件是一个糟糕的设计决定吗?我应该在程序中使用标志吗?使用sbt clean
似乎吸尘器我而不必调用sbt clean
然后sbt "run --clean"
.这将*.foo
在基本目录中找到匹配的内容(但不是子目录):
cleanFiles <++= baseDirectory (_ * "*.foo" get)
Run Code Online (Sandbox Code Playgroud)
这是有效的,因为它Seq[File]
被隐式转换为a PathFinder
,它具有诸如*
(匹配基本目录**
中的模式)和(匹配包含子目录的模式)之类的方法.然后get
将其转换回Seq[File]
.