diff --git a/main/src/main/scala/sbt/internal/Clean.scala b/main/src/main/scala/sbt/internal/Clean.scala index 0d980c50e..c55a0f90a 100644 --- a/main/src/main/scala/sbt/internal/Clean.scala +++ b/main/src/main/scala/sbt/internal/Clean.scala @@ -93,8 +93,9 @@ private[sbt] object Clean { val targetDir = (scope / target).?.value.map(_.toPath) targetDir.filter(_ => full).foreach(deleteContents(_, excludeFilter, view, delete)) - (scope / cleanFiles).?.value.getOrElse(Nil).foreach { f => - deleteContents(f.toPath, excludeFilter, view, delete) + (scope / cleanFiles).?.value.getOrElse(Nil).foreach { x => + if (x.isDirectory) deleteContents(x.toPath, excludeFilter, view, delete) + else delete(x.toPath) } // This is the special portion of the task where we clear out the relevant streams diff --git a/sbt/src/sbt-test/actions/clean-files-directory/a.txt b/sbt/src/sbt-test/actions/clean-files-directory/a.txt new file mode 100644 index 000000000..e69de29bb diff --git a/sbt/src/sbt-test/actions/clean-files-directory/build.sbt b/sbt/src/sbt-test/actions/clean-files-directory/build.sbt index 7f46570c3..24aa7be9b 100644 --- a/sbt/src/sbt-test/actions/clean-files-directory/build.sbt +++ b/sbt/src/sbt-test/actions/clean-files-directory/build.sbt @@ -1 +1,2 @@ -cleanFiles += baseDirectory.value / "foo" \ No newline at end of file +cleanFiles += baseDirectory.value / "foo" +cleanFiles += baseDirectory.value / "a.txt" diff --git a/sbt/src/sbt-test/actions/clean-files-directory/test b/sbt/src/sbt-test/actions/clean-files-directory/test index aadb9f62a..e98a3b020 100644 --- a/sbt/src/sbt-test/actions/clean-files-directory/test +++ b/sbt/src/sbt-test/actions/clean-files-directory/test @@ -1,3 +1,4 @@ > clean -$ absent foo/bar/baz.txt \ No newline at end of file +$ absent foo/bar/baz.txt +$ absent a.txt