Maven庫中.lastUpdated檔案自動清除工具
阿新 • • 發佈:2018-12-23
最近開發過程中,在更新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);
/**
* @param args
*/
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
原始碼下載地址:
工程裡還包括一個批量安裝jar包到本地maven庫的工具。以後再另外介紹。