diff --git a/main/src/main/scala/sbt/Defaults.scala b/main/src/main/scala/sbt/Defaults.scala index 693eef0fa..87e3f9831 100644 --- a/main/src/main/scala/sbt/Defaults.scala +++ b/main/src/main/scala/sbt/Defaults.scala @@ -342,9 +342,10 @@ object Defaults extends BuildCommon { )) lazy val projectTasks: Seq[Setting[_]] = Seq( - cleanFiles := cleanFilesTask.value, + cleanFiles := Seq(managedDirectory.value, target.value), + cleanFilesTask := cleanFilesImpl.value, cleanKeepFiles := historyPath.value.toVector, - clean := (Def.task { IO.delete(cleanFiles.value) } tag (Tags.Clean)).value, + clean := (Def.task { IO.delete(cleanFilesTask.value) } tag (Tags.Clean)).value, consoleProject := consoleProjectTask.value, watchTransitiveSources := watchTransitiveSourcesTask.value, watch := watchSetting.value @@ -780,8 +781,8 @@ object Defaults extends BuildCommon { pickMainClass(classes) } - /** Implements `cleanFiles` task. */ - def cleanFilesTask: Initialize[Task[Vector[File]]] = + /** Implements `cleanFilesTask` */ + def cleanFilesImpl: Initialize[Task[Vector[File]]] = Def.task { val filesAndDirs = Vector(managedDirectory.value, target.value) val preserve = cleanKeepFiles.value diff --git a/main/src/main/scala/sbt/Keys.scala b/main/src/main/scala/sbt/Keys.scala index 789517c3e..4254e28c7 100644 --- a/main/src/main/scala/sbt/Keys.scala +++ b/main/src/main/scala/sbt/Keys.scala @@ -107,7 +107,8 @@ object Keys { val classDirectory = SettingKey[File]("class-directory", "Directory for compiled classes and copied resources.", AMinusSetting) @deprecated("Use the cacheDirectory provided by streams.", "0.13.0") val cacheDirectory = SettingKey[File]("cache-directory", "Directory used for caching task data.", BMinusSetting) - val cleanFiles = TaskKey[Seq[File]]("clean-files", "The files to recursively delete during a clean.", BSetting) + val cleanFiles = SettingKey[Seq[File]]("clean-files", "The files to recursively delete during a clean.", BSetting) + val cleanFilesTask = TaskKey[Seq[File]]("clean-files-task", "The files to recursively delete during a clean.", BSetting) val cleanKeepFiles = SettingKey[Seq[File]]("clean-keep-files", "Files or directories to keep during a clean. Must be direct children of target.", CSetting) val crossPaths = SettingKey[Boolean]("cross-paths", "If true, enables cross paths, which distinguish input and output directories for cross-building.", ASetting) val taskTemporaryDirectory = SettingKey[File]("task-temporary-directory", "Directory used for temporary files for tasks that is deleted after each task execution.", DSetting)