用过Maven的应该都遇到过,当网速不好或者源有问题的时候,Maven的依赖包经常下载失败。
下载失败后在本地仓库对应的文件夹中有一个以.lastUpdated
结尾的文件,如果不手动删除这个文件,就不能重新更新依赖,重新下载对应的jar包。
一般情况下遇到的时候可能直接手动找到目录删除。
当出现很多这样的情况时,一个个找起来也很麻烦。
因此本文提供一个小工具,就是一段Java代码,通过这段代码来删除。
public class CleanMvn { public static void main(String[] args){ if(args.length != 1){ print("使用方法错误,方法需要一个参数,参数为mvn本地仓库的路径"); } findAndDelete(new File(args[0]); } public 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; } public 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(); } } public static void print(String msg){ System.out.println(msg); } }可以在IDE中指定参数后运行这段代码,例如直接调方法
findAndDelete(new File("d:\\.m2\\repository"));
或者在命令行下执行这段代码:
-
首先
javac CleanMvn.java
编译为.class
文件。 -
然后
java CleanMvn d:\.m2\repository
通过后面的参数来删除本地仓库中无效的文件。