2013-04-10 57 views
3

假設我有一個Scala程序來創建以.foo結尾的文件。Scala sbt - 使用通配符或正則表達式清理文件

我在用sbt構建,並且想要在調用sbt clean時刪除這些文件。

Add additional directory to clean task in SBT build表明,燎文件可以通過

cleanFiles <+= baseDirectory { _/"test.foo" } 

但是可以添加,但目前還不清楚如何擴展該做的事:

cleanFiles <append> <*.foo> 

所有.foo文件將在同一目錄中,所以我不需要遞歸檢查目錄。儘管如此,看到這也會很有趣。

  1. 如何配置sbt以清除匹配通配符或正則表達式的文件?
  2. 這是一個糟糕的設計決定,sbt clean刪除我的程序生成的文件? 我應該在我的程序中使用一個標誌嗎?使用sbt clean似乎比我更清潔,而不是sbt clean,然後sbt "run --clean"

回答

5

這會發現,在基本目錄匹配*.foo任何東西(但不是子目錄):

cleanFiles <++= baseDirectory (_ * "*.foo" get) 

這工作,因爲Seq[File]被隱式轉換爲PathFinder,其作爲*這樣的方法(賽基本目錄中的模式)和**(匹配包含子目錄的模式)。然後get將其轉換回Seq[File]

+0

完美,謝謝 - 這正是我需要的。 – 2013-04-10 19:19:58

+0

對於其他旅行者來說,目前唯一支持的通配符是「*」而不是「[0-9]」。見http://www.scala-sbt.org/release/docs/Detailed-Topics/Paths#file-filters – Traveler 2013-06-12 01:04:07