目录
二、清理Local Repository的.lastUpdated文件
一、idea配置maven
1、配置maven版本及本地仓库
关于项目中对maven的使用,建议不要使用springBoot自带的maven,因为它的版本是比较高的,稳定性不是很好。
File -》Settings-》Maven:在这里配置自己电脑安装的maven和setting文件即可。本地仓库的配置,如果settings.xml文件已经配置了,idea会自动读取到。
idea 新建maven项目时,避免每次都需要指定自己的maven目录。
同时,建议在settings.xml文件里将中央仓库该为阿里云的,这样下载依赖的速度会快很多。如何修改中央仓库 请点击
二、清理Local Repository的.lastUpdated文件
众所周知,Maven在下载仓库中找不到相应资源时,会生成一个.lastUpdated为后缀的文件。如果这个.lastUpdated文件存在于本地仓库中,那么即使换一个有资源的远程仓库后,Maven依然不会去下载新资源。
清理.lastUpdated文件的脚本如下:(注意将repository的地址改成自己的):
set REPOSITORY_PATH=C:\softwareInstall\01java\repository
rem 正在搜索...
for /f "delims=" %%i in ('dir /b /s "%REPOSITORY_PATH%\*lastUpdated*"') do (
del /s /q %%i
)
rem 搜索完毕
pause
新建一个text的文件,copy进去,将文件后缀改为 .bat 双击即可运行。运行效果如下:
同时提供一个Java代码版的(还可以清空空的文件夹哟)
package com.hanclouds.teamwork.result;
/**
* @author MouFangCai
* @date 2019/7/10 17:28
*/
import java.io.File;
/**
* 清理maven仓库
* @author xuzhao
*
*/
public class MavenClean {
private static int emptyDirectoryNum = 0;
private static int lastUpdateNum = 0;
private int emptyNum = 0;
/**
* 要清理的内容包括
* 1. 所有的.lastUpdated 结尾的文件
* 2. 清理之后的所有空文件夹
*/
public static void main(String[] args) {
final String mavenRepositoryPath = "C:\\softwareInstall\\01java\\repository";
File f = new File(mavenRepositoryPath);
MavenClean clean = new MavenClean();
//while(clean.emptyNum!=0&&clean.emptyNum!=-1) {
//这里一次执行清理不完 多次执行直到打印出0
clean.cleanLastUpdate(f);
clean.cleanEmptyDirectory(f);
System.out.println("删除文件 "+ lastUpdateNum+"个, 删除空文件夹 "+emptyDirectoryNum+"个");
System.out.println(clean.emptyNum);
//}
}
/**
* 删除所有.lastUpdated结尾的文件
* @param f
*/
public void cleanLastUpdate(File f) {
if(f!=null) {
if(f.getName().endsWith("lastUpdated")) {
lastUpdateNum++;
System.out.println("要删除的文件是:"+f.getAbsolutePath());
f.delete();
}
if(f.isDirectory()) {
File[] fs = f.listFiles();
for(File fItem:fs) {
cleanLastUpdate(fItem);
}
}
}
}
/**
* 删除所有的空文件夹
* @param f
*/
public int cleanEmptyDirectory(File f) {
if(f!=null&&f.isDirectory()) {
File[] fs = f.listFiles();
if(fs.length==0) {
emptyDirectoryNum++;
emptyNum++;
System.out.println(f.getAbsolutePath() +" 是空文件夹被删除");
f.delete();
}else {
for(File fc:fs) {
cleanEmptyDirectory(fc);
}
}
}
return emptyNum;
}
}
三、在idea中重新导入依赖
然后在idea中“Reimport”依赖:(或者右击对应微服务,点击)
如果Reimport后依赖还是报红,可先clean再install:
注意:如果是分布式项目,注意各个微服务之间的依赖的关系,install的顺序要注意。各个微服务的顺序,可以先install父微服务,Maven会首先解析聚合模块的POM、分析要构建的模块、并计算出一个反应堆构建顺序( Reactor Build Order)。根据这个顺序依次install就OK了。