背景:最近项目上线遇到个棘手问题,服务A星期一开发了一个release_20230925包给到B服务,B服务测试环境都没问题,星期五服务AB都发布后到产线上,服务B发布正常,但服务B调用B的一些接口(接口不是A提供的)时候报空指针错误(事后发现空指针式由于引入了A release_20230925包导致的依赖冲突)
原因:服务A使用jekins发布,发布执行的打包脚本是mvn install,mvn install会直接把当前服务打的包推送到jekins本地(版本取决于代码里的版本),这个包在星期五,产线的jekins重新打了一个,服务A在星期二的时候对这个包加了依赖X,导致星期五服务发版的时候重新打了一个带有X依赖的release_20230925在jekins上
此时服务B也发布,在识别release_20230925包时发现jekins上有就直接拿过来用了,没有去远端来包(远端的包是不带X依赖的),导致产线环境新引入了X依赖和服务B冲突,导致错误发生
解决:打包命令用mvn package不要用mvn install
其实和本地拉依赖一样,本地仓库有就不去远端拉依赖了