相关文章推荐
才高八斗的茶叶  ·  Single sign-on ...·  8 月前    · 
耍酷的炒饭  ·  外交学院·  1 年前    · 
宽容的苦咖啡  ·  速看 | ...·  1 年前    · 
愤怒的消炎药  ·  This relative module ...·  2 年前    · 

问题描述及原因:

Maven窗口看到,部分或者全部jar包显示为无法识别状态,打开相应的maven库发现各个jar包完好无缺,在多次实验中发现多次打开同一项目会出现不同的依赖无法识别,即依赖不识别是随机出现的,我称之为“薛定谔的依赖不识别”,此种不识别共分为3种类型

Maven不识别引入的依赖

项目初始化会加载Maven项目依赖结构的缓存,快速构建pom文件指定的依赖与maven本地的repository库中的链接关系,当Maven发现pom文件指定的依赖在repository库中不存在、不对应、文件不完全时就会报出Maven识别错误。

  • 此情况下如果pom文件能够识别依赖准确位置,一般是pom依赖下载不全或者依赖损坏导致。
  • 如果pom文件同时不能识别依赖准确位置,一般是pom依赖无法链接,一般是pom依赖被删除

pom依赖损坏常见于网络受限原因, maven会在repository库中生成后缀为.lastUpdated的同名中间文件,必须删除中间文件否则会一直识别失败 ,可编写简单bat脚本自动扫描并删除中间文件

总的来说Maven窗口依赖报错一般是上一次成功引入依赖链接后,链接或者依赖自身损坏导致,但是请注意还可能存在 repository库权限问题 ,IDEA默认的repository库是在用户目录下.m2文件夹下,所以不存在权限问题

解决办法(建议全都操作一遍)

Toggle offline mode是脱机模式,即只在本地搜索可用依赖;.iml文件是maven工程配置文件,Maven依赖链接缓存就在这里,此外该文件还包括目录结构等

  • repository库清理 :百试不爽的招数,视报错数量大小自定义删除repository库中的依赖,可全部删除。随后重载Maven配置并重新下载依赖。依照下载反馈修改IDEA中的相关参数,包括内存限制、SSL认证等问题

阿里云官方给出的仓库链接是https,因此可能会存在https认证不通过问题,该种问题表现为无法完整下载依赖,存在大量的.lastUpdated文件,其解决办法为在File -> Settings -> Maven -> Importing -> VM options for importer参数中添加选项,参考 这里
还有一些情况下在File -> Settings -> Maven -> Importing -> VM options for importer选项中放宽内存限制同样解决无法下载完全依赖的方法,参考 这里
注: 我们学校的校园网应该对某些网址进行流量和速度限制,因此某些时候我用校园网无法完全下载pom依赖(信息黄泉md),我 切换成手机热点 即可下载

只有pom.xml种无法识别依赖

这里只是举个例子
以上图片只是举个例子

只有pom.xml中某几处依赖飘红报错是最常见的问题,Maven依据groupId、version和artifactId属性生成相应的依赖链接,随后向中央仓库或者本地仓库请求依赖本体,一旦成功进行链接即会在Maven缓存中生成链接(表现为右侧Maven窗口可见该依赖及依赖树结构),如果第一次请求链接失败则不会进行Maven缓存,此时就会出现只有pom文件报错而右侧Maven窗口无异常的情况

  • 99%情况是书写不合规范,包括版本号错误、groupId不存在、artifactId拼写错误等等
  1. 确定pom依赖是否可以正确链接到本地仓库
    在这里插入图片描述
    悬浮于依赖上方即可出现链接信息

  2. 从MVNrepository网站找到正确的pom格式,网址在 这里
    在这里插入图片描述
    在搜索框中搜索依赖名称,随后选择版本号即可显示正确的pom格式