批量删除Maven下载失败的文件夹

用过Maven的应该都遇到过,当网速不好或者源有问题的时候,Maven的依赖包经常下载失败。 下载失败后在本地仓库对应的文件夹中有一个以.lastUpdated结尾的文件,如果不手动删除这个文件,就不能重新更新依赖,重新下载对应的jar包。

一般情况下遇到的时候可能直接手动找到目录删除。

当出现很多这样的情况时,一个个找起来也很麻烦。

因此本文提供一个小工具,就是一段Java代码,通过这段代码来删除。

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
import java.io.File;

public class CleanMvnFailure {

public static void main(String[] args) {
if (args.length != 1) {
System.out.println("please input maven factory path:");
}
findAndDelete(new File(args[0]));
}

private static boolean findAndDelete(File file) {
if (!file.exists()) {
} else if (file.isFile()) {
if (file.getName().endsWith("lastUpdated")) {
deleteFile(file.getParentFile());
return true;
}
} else if (file.isDirectory()) {
File[] files = file.listFiles();
for (File f : files) {
if (findAndDelete(f)) {
break;
}
}
}
return false;
}

private static void deleteFile(File file) {
if (!file.exists()) {
} else if (file.isFile()) {
print("删除文件:" + file.getAbsolutePath());
file.delete();
} else if (file.isDirectory()) {
File[] files = file.listFiles();
for (File f : files) {
deleteFile(f);
}
print("删除文件夹:" + file.getAbsolutePath());
print("====================================");
file.delete();
}
}

private static void print(String msg) {
System.out.println(msg);
}
}

如果在工具上运行该段代码,则自行修改传入本地仓库路径的方法;

如果在命令行下运行则:
首先编译java文件:javac CleanMvnFailure.java
再运行对应的class文件:java CleanMvnFailure “D:\Program Files\maven_factory”
因为路径中带空格,须用引号引起来