最近开发noCloud过程中,在更新maven库时,如果网络问不定或者是一些自己手动安装到本地maven库的jar包,在中心库找不到对应的jar,会生成一些.lastUpdated文件,会导致m2e工具无法找到依赖的jar包,从而提示编译错误。
对于该问题,我也没有找到很好的解决方案,只能手动删除一下lastUpdated文件。文件多时十分繁琐。网上看到别人的解决方案也有利用命令行命令,匹配文件扩展名批量删除的。命令行不会,于是就写了几行代码用于删除.lastUpdated文件。
如有其他直接的解决方案,望不吝赐教,写代码实属无奈之举。
- public class DelLastUpdated {
-
- private static PropertyHelper propHelper = new PropertyHelper("config");
- private static final String KEY_MAVEN_REPO = "maven.repo";
- private static final String MAVEN_REPO_PATH = propHelper
- .getValue(KEY_MAVEN_REPO);
- private static final String FILE_SUFFIX = "lastUpdated";
- private static final Log _log = LogFactory.getLog(DelLastUpdated.class);
-
-
-
-
- public static void main(String[] args) {
- File mavenRep = new File(MAVEN_REPO_PATH);
- if (!mavenRep.exists()) {
- _log.warn("Maven repos is not exist.");
- return;
- }
- File[] files = mavenRep.listFiles((FilenameFilter) FileFilterUtils
- .directoryFileFilter());
- delFileRecr(files,null);
- _log.info("Clean lastUpdated files finished.");
- }
-
- private static void delFileRecr(File[] dirs, File[] files) {
- if (dirs != null && dirs.length > 0) {
- for(File dir: dirs){
- File[] childDir = dir.listFiles((FilenameFilter) FileFilterUtils
- .directoryFileFilter());
- File[] childFiles = dir.listFiles((FilenameFilter) FileFilterUtils
- .suffixFileFilter(FILE_SUFFIX));
- delFileRecr(childDir,childFiles);
- }
- }
- if(files!=null&&files.length>0){
- for(File file: files){
- if(file.delete()){
- _log.info("File: ["+file.getName()+"] has been deleted.");
- }
- }
- }
- }
-
- }
配置文件:config.properties
- maven.repo=D:\\.m2\\repository
源码下载地址:
svn: https://svn.code.sf.net/p/maventools/code/trunk/maven-tools
工程里还包括一个批量安装jar包到本地maven库的工具,以前发过,后来做了一些改进和修正。
本文出自“苦逼coder”的博客http://mushiqianmeng.blog.51cto.com/3970029/720448