欢迎您访问程序员文章站本站旨在为大家提供分享程序员计算机编程知识!
您现在的位置是: 首页

IDEA里Maven依赖无法下载的解决办法

程序员文章站 2022-05-04 07:50:10
...

1.确认pom.xml中的远程仓库或者nexus私服配置正确

有些项目的pom.xml会配置nexus私服,用于下载一些局域网依赖或者其他公开私服的依赖,请确认这里配置正确。(没有使用远程仓库或本地nexus私服的请跳至下一步~)
当前也可以改为使用一些国内比较好用的仓库镜像配置,如阿里云,从而加快包的下载,不再从官方仓库缓慢下载而导致下载不下来。
项目中pom.xml中的远程仓库配置示例:

  //阿里云搭建了一个国内镜像http://maven.aliyun.com,跑起来速度很快,可以进行配置
    <repositories>
        <repository>
            <id>nexus-aliyun</id>
            <name>nexus-aliyun</name>
            <url>http://maven.aliyun.com/nexus/content/groups/public/</url>
            <releases>
                <enabled>true</enabled>
            </releases>
            <snapshots>
                <enabled>false</enabled>
            </snapshots>
        </repository>
    </repositories>

本地maven子目录/conf/settings.xml中settings.xml中配置:

<mirror>
    <!--This sends everything else to /public -->
    <id>nexus-aliyun</id>
    <mirrorOf>*</mirrorOf>
    <name>Nexus aliyun</name>
    <url>http://maven.aliyun.com/nexus/content/groups/public</url>
</mirror>

修改完毕之后,包的下载速度会变快,如果看到进度条还是艰难地从http://repo.maven.apache.org/maven2/ 官方仓库中 download 的话,尝试重启下 IDE 。感谢阿里云为广大代码工作者做出巨大贡献。

2.如果修改了仓库配置后点击compile并刷新后依旧无法下载个别依赖,可以移除本地maven的repository中的相应依赖的下载文件,让其重新下载。

有时候我们依赖下载失效是由于本地已经存在一份失效的依赖下载,导致项目默认从本地的依赖中进行依赖获取而导致项目失效,我们可以通过删除本地的依赖来让项目重新下载依赖。

maven在本地的依赖存储地址为:Default: ${user.home}/.m2/repository
~/.m2/repository
用命令行打开目录可看到所有依赖

IDEA里Maven依赖无法下载的解决办法
repository示例

接下来以json-lib-2.4包为例,通过 cd net/sf/json-lib/json-lib进入包目录下,
删除目录下文件夹 2.4 ,命令为:rm -r 2.4
然后进入IDEA项目中,再次点击Maven dependency中的 compile进行包下载,正常可以下载成功。

3.如果修改了仓库配置,重新下载尝试几次后依旧无法正常使用依赖,需要手动下载依赖,然后覆盖本地maven的repository中的jar包,从而导入依赖。

依赖的下载地址:官方依赖仓库Repository依赖搜索地址【点进去搜索自己要的依赖然后选择地址进行下载,从而实现依赖的下载】
下载后通过命令行复制到步骤2的repository目录下:
cp 你下载的文件 要到的文件地址
示例:

cp /Users/root/Downloads/json-lib-2.4-jdk15.jar /Users/root/.m2/repository/net/sf/json-lib/json-lib/2.4

4.部分依赖jar包需要添加classifier字段

如上文提到的json-lib-2.4包,我下载下来后为json-lib-2.4-jdk15.jar,这与maven依赖名json-lib-2.4不符,最后maven还是会找不到这个依赖,原因是 jar的名称中多了一个跟JDK相关的名称,例如jdk15,按照上面的配置,明显是找不到这个jar的,于是classifier就有它的用武之地了,它表示在相同版本下针对不同的环境或者jdk使用的jar,如果配置了这个元素,则会将这个元素名在加在最后来查找相应的jar,示例如下:

        <dependency>
            <groupId>net.sf.json-lib</groupId>
            <artifactId>json-lib</artifactId>
            <version>2.4</version>
            <classifier>jdk15</classifier>
        </dependency>
相关标签: maven