因未来计划服务全部迁移至云服务商(降低维护成本),为减少迁移时升级工程遇到的各类兼容性问题,在日常项目开发时顺带把若干模块(涉及开发的模块)进行了升级,主要升级的组件有spring boot 2以上(部分老工程还是使用的spring boot 1版本)、mybatis、dubbo、curator、HikariCP、Lettuce、jedis、zookeeper等,在升级过程中伙伴们或多或少都出现了“卡壳”现象,好在经过一番调试之后都顺利完成升级,这里同步一下个人升级工程环境的心得:
1、仔细阅读开源工具版本兼容性,跨大版本升级,一定要保证其他组件大版本配套
2、观察本工程相关jar包依赖,以及父工程、引入其他jar的jar包依赖,以局部优先规则,本工程显示指定需要的jar包
3、idea开发工具编译完成的target目录,里面可以查阅升级的jar最终发布的版本,会存在jar
冲突情况,可能编译之后的不是自己预先引入的jar包版本(涉及依赖覆盖问题)
4、解决jar包依赖被覆盖问题,这里借助一个工具maven helper(idea插件),该插件可以分析依赖冲突,找到冲突解决冲突,一步一步调整jar包依赖
5、依赖排除,为第四步的补充,解决冲突可以进行排除或进行主动依赖(建议此项),本工程显示指定需要的jar包,这样后续升级直接更新版本即可,减少其他jar包升级后调整依赖的影响
6、maven私服调整为aliyun,下载各类jar速度飞快,节省调试时间
7、编译脚本、发布脚本调整,升级新版后之前配置的相关脚本也必须配套升级
8、自测验证、单元测试、功能测试,保证升级后的工程对业务无影响