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

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

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

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

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

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"
因为路径中带空格,须用引号引起来