场景描述
项目信息:springboot
原始部署
原本部署是将项目由本地打包成jar包,然后运行dockerfile打包成镜像后,在某台服务器上进行部署运行
新的部署
现在将项目制作成流水线,然后在流水线中拉取gitlab中的代码,然后执行maven install,之后执行dockerfile打包成镜像,推送到镜像仓库中。
问题
由于流水线也好,镜像仓库也好,都是公司不知道用了哪些开源技术制作出来的自己的一套东西,问题就出在maven install这一步,在流水线上打包的时候,maven从公司的私有仓库里下载依赖,某些依赖仓库里没有,而对maven的阿里源等又不通,所以只能将依赖换成本地jar包,放在lib目录下引入:

可是修改完运行的时候,报错找不到某个类,在使用mvn公共仓库的时候是没有问题的。
解决办法
借助idea插件:Maven Helper
1、打开pom文件,首先将pom恢复到正常可用的状态,点击进入dependency analyzer
选中all dependencies as list,然后ctrl+A全选,Ctrl+C复制到Excel中

2、将需要改为本地依赖的jar包修改完成以后,点击refresh UI

重复上面的操作,将依赖列表复制到Excel的第二列,两列一对比,就可以找出少了那些依赖,将这些依赖挨个复制到lib目录下,引入一下就可以。
原因分析
当maven配置依赖为system时,只会引入该jar包,不会引入其相关依赖的jar包,导致切换到本地依赖以后出现了找不到xxx类的情况
本文介绍了一种解决Maven项目在使用本地依赖时遇到的类找不到问题的方法,通过使用Idea插件MavenHelper来对比依赖差异,确保所有必要的依赖都被正确引入。

1901

被折叠的 条评论
为什么被折叠?



