问题:
在tomcat里的同一个app里,已经有个old version的class被别人用到(也加到dependency里面了),我有个新的功能开发,里面引用了一个该class的最新的版本,我怎么在我的jar包里面隔离另一个旧版本的class?
类重定位
官网是“Relocating Classes”,如果一个uber-jar会被其他项目引用,uber-jar中依赖的类可能会导致类定位冲突(由于不同版本的jar包引起),我们可以通过shade插件来将被隐藏的类重定位以使该类只在该uber-jar中使用,这种方式也经常被用来解决jar包冲突问题。
让 org.codehaus.plexus.util 包和它的子包移动到 org.shaded.plexus.util包中,而类Xpp3Dom和其他的一些则保留在原来的package中。
参考链接
网友评论