# windows脚本
@echo off
rem create by NettQun
rem 这里写你的仓库路径
set REPOSITORY_PATH=D:\Java\maven-repository\maven-aliyun\repository
rem 正在搜索...
for /f "delims=" %%i in ('dir /b /s "%REPOSITORY_PATH%\*lastUpdated*"') do (
echo %%i
del /s /q "%%i"
)
rem 搜索完毕
pause
maven 依赖冲突,引用错误
前两个问题主要跟本地网络有比较大的关系,那这个问题,主要是因为 maven 特性导致。
那 maven 有一个依赖传递的特性,如果 A 依赖 B,而 B 依赖 C,那么 C 这个依赖就会通过 B 间接传递给 A。
那如果有多个间接依赖存在,但是彼此版本却不一样,这就会导致依赖冲突。
如上所示,如果 A 应用 使用了 E2.0 新增某些类或者方法,那这个时候由于依赖冲突,A 实际上间接依赖的是 E1.0,这就导致 IDEA 编译的时候找不到 E 新增这些类或方法。
那这个问题解决办法,也比较简单,有冲突,我们就直接解决冲突就可以了。
我们可以在 IDEA 中安装一个 Maven Helper 插件,然后打开 pom 文件,点击 Dependency Analyzer 选项,在这里面选中 Conflicts 按钮,就可以看到当前所有冲突的依赖包。
选中其中一个依赖包,就可以在右侧看到所有冲突依赖包的版本。选中其中一个版本,右键选中 Exclude 即可。
A 应用依赖 B ,那 B 是一个开源项目,但是公司内部对 B 进行一些修改。修改之后, B 依赖 C ,所以 A 中使用 C 依赖某些类。
那由于我本地仓库已经下载了 B 开源版本,那当我本地拉取 A 应用源码,那依赖关系就变成了 图中虚线关系。
IDEA 缺失了 C 依赖,这就导致项目编译错误,无法找到 C 中一些类。
那这个问题解决办法,就是在本地仓库找到 B 依赖,然后删除拉取即可。
解决办法比较简单,关键我们需要找到中间这个依赖。 IDEA 本地缓存异常
最后一种情况,跟 IDEA 有比较大关系。
IDEA 之所以快,那是因为 IDEA 打开新的工程的时候,它会构建项目索引以及生成相关缓存。
那有时候,如果 IDEA 缓存被破坏,那就有可能导致 IDEA 无法识别 maven 依赖, 从而导致 IDEA 无法找到某些类。
这种情况我们需要删除原先的缓存以及索引,等待 IDEA 重新构建缓存以及索引即可。
在 IDEA 中点击 File/Invalidate Cached 即可。