jar包冲突解决

原文 – 微博

“基础架构部的jar包冲突解决”,这是我们各种中间件sdk最头痛的事情,最怕升级之后sdk的依赖包影响了业务本身的依赖包,或者另一个sdk的。

业界解决方案包括osgi, java modules,springboot式的超级pom文件,各种自产的classloader方案比如蚂蚁金服的SOFAArk,我们也自研了一个但没上线。

最近爱用的方案是maven-shade plugin,将sdk与容易冲突的依赖包如httpclient打包在一起,修改hc的package名比如改成cfgcenter.org.apache,这样就不和谁冲突了,然后坑粗吭哧修改所有import的地方。

天啊,以前我们是自己拉httpclient的源码下来手工修改的,工作量巨大,现在一句plugin配置搞定了,后面都是基于asm的可靠干活。

(但还是人工留意下有没有基于类名反射的情况)