目录

  • 一.问题情况
  • 二.解决思路
  • 三.解决办法
  • 1. maven设置本地仓库
  • 2. 在本地依赖中去除`_remote.repositories`配置文件


一.问题情况

项目存在部分依赖无法从线上镜像下载,需要下载后使用本地maven仓库,但是在执行构建,打包等操作时,存在报错问题

Failed to read artifact descriptor for com.***.***.:***:jar:V1.0

大概意思就是,没有办法从指定的线上仓库找到对应的依赖,出现这种情况一般是由于直接从别人那拷贝过来的依赖包中存在下载的版本控制文件,里面配置了默认获取的优先级,网络地址大于本地仓库

二.解决思路

经过检查之后,确定需要使用的依赖都存在于本地仓库中,但是仍然报错,显示在线上仓库中没有找到对应的jar
所以我们要做的就思路明确,让maven在执行操作时,先从本地获取依赖而不是从网络仓库获取

三.解决办法

1. maven设置本地仓库

(1) 配置maven设置中的本地依赖仓库位置

maven 优先使用本地仓库 maven打包优先使用本地仓库_intellij-idea


maven 优先使用本地仓库 maven打包优先使用本地仓库_maven_02


这里可以根据设置IDEA中使用的maven版本以及maven配置文件位置,maven本地仓库位置等。

可以根据需要勾选:

Work Offline线下模式

Always update snapshots 数据快照(自动更新仓库信息)

(2)在maven 的 settings文件中配置文件源

<!--阿里maven源时配置-->
    <mirror>
      <id>alimaven</id>
      <name>aliyun maven</name>
      <url>
        http://maven.aliyun.com/nexus/content/groups/public/
      </url>
      <mirrorOf>central</mirrorOf>
    </mirror>
    <!--使用本地源时配置-->
    <mirror>
      <id>central</id>
      <mirrorOf>*</mirrorOf>
      <name>central</name>
      <!--刚刚选定的maven本地仓库位置-->
      <url>D:\maven 3.9.3\repository</url>
    </mirror>
<!-- 我的本地仓库位置 -->
  <localRepository>D:\maven 3.9.3\repository</localRepository>

(3)更新maven依赖,执行package操作,不出现报错即成功

maven 优先使用本地仓库 maven打包优先使用本地仓库_maven 优先使用本地仓库_03

2. 在本地依赖中去除_remote.repositories配置文件

(1)在刷新maven依赖时查看缺失包名
(2)打开本地仓库对应依赖路径下的_remote.repositories文件

如果显示如下内容,说明你在下载依赖时,之前的配置是优先从阿里云远程仓库下载

junit-4.12.jar>alimaven=
junit-4.12.pom>alimaven=

有两种方法都可以达到我们优先使用本地仓库效果


junit-4.12.jar>=
junit-4.12.pom>=
  • 直接删除_remote.repositories文件

maven 优先使用本地仓库 maven打包优先使用本地仓库_intellij-idea_04

(3) 同上方法中(3)更新maven依赖,执行package操作,不出现报错即成功