1.1 为什么要统一springboot版本
想必做过微服务的同学都遇到过一个很难受的问题,就引用别的部门提供的sdk经常遇到jar包和当前项目冲突问题,解决办法无非就是找出别人提供的sdk中和本项目冲突的jar,然后排除它,这样就能解决,如下图:
但是大家有没有想过,如果别的部门提供的jar的springboot版本如果和我们当前项目引用的springboot版本一样,是不是就不会引起jar冲突呢。
那么第二个问题来了,每个部门使用的springboot版本都不一样,那怎么才能做到统一呢,而且使用的公共的common版本每个部门也都不一样,每个版本的common里使用的springboot的版本也有可能不一样。如何做呢?
1.2 如何去做(定制公司dependencies)
看过springboot源码的人就知道,我们通过springboot的任意一个maven依赖,一直跟到顶层,发现springboot和springcloud在定制版本的时候,都有一个dependencies来做最上层的版本控制,那我们可以仿照它来做一个公司级别的dependencies,来控制springboot,springcloud,数据库驱动,别的一些第三方的jar的版本。这样以来,公司所有的项目只需要依赖最上层的pom,所有的jar的版本都在最上层来制定,就不会从在版本不一致的问题了,接下来我们就来看看具体的实现。
由于篇幅原因,我这里直接给我github的地址,大家直接去看代码,注释很详细
到这里,基本的jar依赖冲突问题可以解决了,但是,我们可以做的更优雅一点,为什么这么说呢,企业级开发,有一些核心的common包是不停的需要需改的,修改之后要去升版本,这势必要动dependencies,如果改了dependencies依赖的一些第三方的jar,就会造成整个公司使用jar出现问题。为了不把这个最上层的pom暴露给开发,我们需要引入一个中间parent pom,仔细去看springboot版本依赖,他也是这么做的。接下来,我们可以公司的核心jar,比如common,utils,redis等等放到parent中,如果需要升版本只需要动这个就好了。
再者就是在parent中可以去管理构建jar的方式,接下来我们看看怎么做。代码已经上传github
parent pom 现在已经完成,那我们怎么使用呢,这个简单,上代码:
我们会发现,我们不再需要关心jar的版本,需要什么只需要引入jar就可以。
1.3 带来的好处
到此,我们已经搭建起来一个公司统一的dependencies和parent,也学会了如何去使用,那么我们做这些会给我们带来什么便利和好处呢,我们接下来在项目中去体会,后续的项目中我会详细的带大家去亲身体会。