现象
问题起因:是我更换maven
的 setting.xml
的私服的配置导致的。(其实不算是,主要是我更换setting.xml
配置后,手贱回滚pom.xml
了,导致之前的解决的jar冲突又回来了)
现象:项目代码大量飘红;加载索引失败(scanning files to index)
,项目无法启动;项目能启动了,却报了ClassNotFoundException
的错误。。。
排查过程
第一
build
的时候,会有以下警告和错误
[WARNING] The POM for common-core:0.0.1-SNAPSHOT is invalid, transitive dependencies (if any) will not be available, enable debug logging for more details
[ERROR] ‘dependencies.dependency.version’ for com.google.guava:guava:jar is missing
不过我睁眼瞎,啥都没看到。或者是,太寻常了,连看到没看一眼。。。。就这样和成功擦肩而过。。。
第二 红海问题
逼不得已,先解决红海的问题。关于红海的问题,所以基本可以断定,是包索引的问题。索引没加载成功,导致项目无法加载到这写依赖包。
经过多次的reimport(重新加载依赖信息)
,clean(清空编译文件)
,install(重新编译文件)
,Generate Source and Update Folder for All project(重新加载项目结构)
,invalidate and restart(清除缓存)
发现问题还是没有解决红海的问题。
最后,我直接删除了项目,清除了缓存,并且把项目下的.idea
、.impl
文件都删除了。最后才install
成功的。
关于这个警告,他是说,当前的maven3
不推荐<version>${planning.version}</version>
这种写法
即:不允许version
为非常量值,这种写法会导致项目不稳定。因为未来maven
可能会取消这种写法。
大家可以根据要求修改,也可以当他放屁,等真正不支持的时候,再改。
第三 打包问题
红海问题解决了,打包的时候失败了。经过排查发现,一个名为common-core
项目模块依赖包,出问题了。
这个依赖包,项目到是成功引入了,但是这个包下面的依赖包却没有引入,比如:common-core
引入了的fastjson
,但是项目中却没有fastjson
的包。。。
解决方案:直接通过Project Structure
将缺失的模块导入到项目中。这样依赖的依赖就有了。
第四 启动问题
打包成功,本地启动没有问题,但是上了服务器,却给你报ClassNotFoundException
的问题。
最后多次翻找博客,找打了查看日志的方法:
transitive dependencies (if any) will not be available
根据博客执行命令:
#配置maven环境变量后
mvn clean compile -U -X >> a.log
最后在日志 a.log
中找到了,第一
那两行的提示信息,才发现原来是 guava
的包出现的问题。
最最主要的是,在之前build
的日志中idea
给我了提示了。。。我都没发现。。。
原因:guava
包冲突了,导致了项目引用的common-core
包的传递性被破坏,导致项目无法加载到common-core
下的依赖。也就出现了各种问题。。。。