随着项目不断的迭代、拆分,项目之间的jar包依赖关系复杂度也是不断的变大,看不懂的编译报错,头大的启动问题都在不断的折磨着我们。
解决jar包管理思路
在这里谈谈我的感受和方法,主要概括为:
1、通过顶层统一的父pom来管理spring的jar包版本号,确保spring的core、context、transaction、web等的版本统一。spring多版本的交叉使用,会引入一些看不懂的编译及启动错误。可以借助于dependencyAnalyzer插件来分析冲突(idea插件库)。
2、封装中间件并分不同的模块,如:kafka、dbcp、dubbo、es、redis、mongodb、utils等作为基础组件(生成jar包),不同的项目中只针对用到的中间件基础组件做依赖。
3、和第1点是一个思路,通过顶层统一的父pom来管理第三方公共jar包,例如:apache的commons-collections、google的guava、github的pageHelper、http的okhttp等。
4、项目交叉依赖可以通过在顶层父pom和底层模块之间增加多级父pom,整体的依赖结构是树状结构。
5、服务分层(基础service层、服务编排层、控制器层,其中服务编排层还可以根据实际情况再做分层),只有层次分明,系统才具备扩展性。快速迭代、上线才简单。同层服务相互依赖的管理成本和运行成本只会变的越来越大。
以上三点是我的实践总结,从另外一个视角来看问题,解决问题,希望会给你带来一些灵感。