diff --git a/src/main/java/org/jcnc/snow/pkg/tasks/CleanTask.java b/src/main/java/org/jcnc/snow/pkg/tasks/CleanTask.java index 80700d6..c7431d2 100644 --- a/src/main/java/org/jcnc/snow/pkg/tasks/CleanTask.java +++ b/src/main/java/org/jcnc/snow/pkg/tasks/CleanTask.java @@ -30,13 +30,15 @@ public final class CleanTask implements Task { */ @Override public void run() throws IOException { - deleteDir(Path.of("build")); - deleteDir(Path.of("dist")); + deleteDir(Path.of("build"), false); + deleteDir(Path.of("dist"), false); + System.out.println("[clean] done."); } /** - * 递归删除指定目录及其所有子文件和子目录。 + * 递归删除指定目录下的所有子文件和子目录。 + * 如需删除指定目录本身可将第二个参数 {@code containSelf} 设置为 true *
* 若目录不存在,则直接返回。 *
@@ -45,14 +47,18 @@ public final class CleanTask implements Task { * * * @param dir 需要删除的目录路径 + * @param containSelf 是否删除指定目录本身 * @throws IOException 删除目录或文件过程中发生 IO 错误时抛出 */ - private void deleteDir(Path dir) throws IOException { + private void deleteDir(Path dir, boolean containSelf) throws IOException { if (Files.notExists(dir)) return; try (var stream = Files.walk(dir)) { stream.sorted(Comparator.reverseOrder()) // 先删子文件,后删父目录 .forEach(p -> { try { + if (!containSelf && p == dir) { + return; + } Files.delete(p); } catch (IOException e) { throw new RuntimeException(e);