【问题处理】使用不同的镜像源竟然下载到的依赖不一样,导致项目构建和启动失败,怎么回事呢

最近迁移一个项目的构建环境,所以更改了dockerfile使用的镜像源,结果发生了一系列问题,排查后发现都是依赖的问题,根因真是太难找了,接下来就说说我的心酸历程吧。

构建失败

问题:

构建失败

解决:

上传缺失的依赖到新的镜像源上

心路历程:

只是修改了使用的镜像源,没有改代码,怎么会构建失败呢,同样的构建命令本地没问题呀,可以打包呢,怎么在这个构建环境就不可以呢,带着奇奇怪怪的疑问,寻找着各种各样的答案,各种各样的尝试,后来去所使用的镜像源查看项目中所使用的的依赖,惊喜的发现,原来有几个自定义的依赖并不在这个镜像源上,找到问题原因了,那就好干了,接下来就是把项目中使用到的但镜像源上没有的依赖都上传到这个镜像源上。传完后,再次构建项目,好了,这次构建成功了。

启动失败

问题:Caused by: java.lang.ClassNotFoundException:xxx

【问题处理】使用不同的镜像源竟然下载到的依赖不一样,导致项目构建和启动失败,怎么回事呢_第1张图片

解决:

就把所使用的镜像源中的错误依赖重新上传一下,并且把对的包含第三方依赖的pom文件也一起上传一下,操作后,重新构建项目启动项目

心路历程:

只是修改了使用的镜像源,没有改代码,怎么会报缺少依赖的错呢。
看到缺少依赖,那一般就是缺哪个依赖就把哪个依赖再加上就好了,抱着疑问的态度(“之前咋就不缺依赖呢,也没改代码和pom文件啊”)把缺少的依赖加上了,然而又报下一个缺少的依赖了,额…,不能再加依赖了,还是得找原因,把后添加的依赖去掉恢复之前的pom文件了。
这个问题呢,还是和依赖有关,各种方式尝试,后来想到难道是不同镜像源下载的依赖是不一样的?那就验证一下吧。在本地配置一样的下载镜像源,重新建一个下载依赖的文件,重新下载,和之前下载的进行对比。最后神奇的发现有俩个依赖是和之前的有区别的,之前的依赖中是有第三方依赖的(也就是可以看到依赖中自己使用的依赖) ,而新下载的依赖没有依赖中所使用的依赖。正因为缺少这依赖中的第三方依赖,所以才会一直报缺少依赖的错误,那么找到原因了,怎么解决呢?好了,那就对比这俩个依赖的区别吧,一系列对比后发现,原来差在了pom文件上,新下载的依赖中的pom文件只有自己,而之前下载的依赖中的pom文件不止有自己,还有第三方依赖,那把新下载的依赖中的pom文件直接改一下,效果如何呢,重新刷新一下,果然和之前一样了,由此,那我们就把所使用的镜像源中的这俩个依赖重新上传一下,并且把对的包含第三方依赖的pom文件也一起上传一下,操作后,重新构建项目启动项目,这次终于正常启动了

总结

通过这俩个问题呢,可以知道和之前相比构建失败的区别呢就是那个镜像源,启动失败呢也是因为那个新的镜像源,所以就是和依赖相关,遇到这种问题朝着这个方向走,就会少走很多弯路,省下不少时间。
其实往往最终的解决方式很简单,但是找到这个解决方法的过程确实很不容易的,所以只能在每次的解决过程中吸取经验,争取在下次解决问题的时候快速定位问题及解决问题。

你可能感兴趣的:(问题解决,依赖,项目构建,项目启动,运维)