maven 3.8.1 import 报错:This failure was cached in the local repository and resolution is not reattemp

1. 背景

idea导入新项目,maven使用3.8.1版本,在import时一直报错,如下:

mysql:mysql-connector-java:pom:8.0.27 failed to transfer from https://maven.aliyun.com/repository/public during a previous attempt. This failure was cached in the local repository and resolution is not reattempted until the update interval of nexus has elapsed or updates are forced. Original error: Could not transfer artifact mysql:mysql-connector-java:pom:8.0.27 from/to nexus (https://maven.aliyun.com/repository/public): transfer failed for https://maven.aliyun.com/repository/public/mysql/mysql-connector-java/8.0.27/mysql-connector-java-8.0.27.pom

尝试使用 -U 标记(强制更新快照)运行 Maven 导入

上述报错含义为 失败缓存在本地储存库中,直到nexus的更新间隔已过或强制更新,才会重新尝试解析。建议使用-U选项强制更新。
根据此报错信息,我们可以得到如下两种解决方案。

2. 解决过程

2.1 删除缓存文件

进入maven仓库中该依赖包的缓存文件夹,将里面的文件全部删除。
注:当我们拉取jar包失败的时候,本地库就会生成lastUpdated 文件。 拉取成功的使用可以在本地仓库中查看到jar包。

2.2 使用-U参数

mvn import -U

该命令执行以下操作:

它会检查项目的 pom.xml 文件中定义的依赖项,并与 Maven 仓库中的最新版本进行比较。

如果 Maven 仓库中存在更新的版本,mvn import -U 命令将下载并更新项目的依赖项到最新版本。

-U 标志告诉 Maven 强制检查所有的依赖项,即使它们已经存在于本地仓库中。这样可以确保项目使用的是最新的依赖项版本。

2.3 修改配置文件路径

尝试了上面两种操作,并且各种清除缓存后,仍然是一开始的报错。经过仔细观察报错信息发现,依赖是从aliyun仓库查找的,但是我本地setting并没有配置这一仓库,那么aliyun这个仓库是从哪来的呢?

通过在网上查询maven配置默认仓库发现,maven安装包下的conf目录下面存在setting.xml,里面配置的确实是aliyun。截止到目前终于找到了问题所在,问题也转变成为:为什么idea手动指定的setting文件不生效?

通过查询官网发现,setting文件一般会出现在两个位置:

  • ${maven.home}/conf/settings.xml(全局设置)
  • ${user.home}/.m2/settings.xml(用户设置)

maven 3.8.1 import 报错:This failure was cached in the local repository and resolution is not reattemp_第1张图片

用户设置的优先级高于全局设置的优先级,最终如果两个位置都存在settings.xml,则最终会将两个配置合并,冲突部分按照用户设置来。

idea中maven配置默认使用用户设置,其次使用global settings。当以上两个配置文件均不存在,才会使用用户手动指定的配置文件。

最后,解决方法如下

  • 直接修改默认配置(全局或者用户配置)

  • 删除全局配置及用户配置,手动指定配置路径

  • mvn clean install -s /path/to/your/settings.xml
    如果你想在使用 Maven 的命令行中手动指定 settings.xml 文件的路径,可以使用 -s 参数来实现。以下是使用 命令的解释:
    mvn:表示运行 Maven 命令。
    clean:表示执行 Maven 的 clean 生命周期,清理项目生成的文件。
    install:表示执行 Maven 的 install 生命周期,将项目构建并安装到本地仓库。
    -s /path/to/your/settings.xml:表示使用指定路径下的 settings.xml 文件作为 Maven 的配置文件。

    确保将 /path/to/your/settings.xml 替换为实际的 settings.xml 文件的路径。

    通过在命令行中使用 -s 参数指定 settings.xml 文件的路径,可以覆盖默认的 Maven 配置文件位置,并确保 Maven 使用你指定的配置文件。

至此,问题解决。

你可能感兴趣的:(踩坑日常,maven)