maven导入依赖失败问题——最系统、最彻底的解决方案

目录

一、idea配置maven

1、配置maven版本及本地仓库

二、清理Local Repository的.lastUpdated文件

三、在idea中重新导入依赖


一、idea配置maven

1、配置maven版本及本地仓库

关于项目中对maven的使用,建议不要使用springBoot自带的maven,因为它的版本是比较高的,稳定性不是很好。

File -》Settings-》Maven:在这里配置自己电脑安装的maven和setting文件即可。本地仓库的配置,如果settings.xml文件已经配置了,idea会自动读取到。

 idea 新建maven项目时,避免每次都需要指定自己的maven目录

maven如何在settings.xml文件配置本地仓库

同时,建议在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了。

发布了101 篇原创文章 · 获赞 176 · 访问量 2万+

猜你喜欢

转载自blog.csdn.net/qq_36095679/article/details/97271879