小编Tom*_*ang的帖子

大公司如何应对包依赖冲突问题?

在此输入图像描述 如图所示,一个app(Java)引用了两个第三方包jar(packageA和packageB),它们分别引用了packageC-0.1和packageC-0.2.如果packageC-0.2与packageC-0.1兼容,它将很好用.然而,有时packageA使用了packageC-0.2中不支持的东西,而Maven只能使用最新版本的jar.这个问题也被称为"Jar Hell".

在实践中很难重写包A或迫使其开发人员将packageC更新为0.2.

你如何解决这些问题?这通常发生在大型公司中.

我必须声明这个问题主要发生在BIG公司,因为大公司有很多部门,每当某些开发人员使用新版本的新功能时,让整个公司更新一个依赖关系会非常昂贵.一些依赖罐.这对小公司来说并不是什么大不了的事.

任何回复都将受到高度赞赏.

让我扔掉一块砖,以便先获得宝石.

阿里巴巴是世界上最大的电子商务之一.我们通过创建一个名为Pandora的隔离容器来解决这些问题.它的原理很简单:将这些中间件一起打包并用不同的ClassLoader加载它们,这样即使它们引用了不同版本的相同包装,它们也可以很好地协同工作.但这需要Pandora提供的运行时环境,它作为tomcat进程运行.我不得不承认这是一个沉重的计划.Pandora是基于JVM通过类加载器和类名识别一个类的事实而开发的.

如果您知道某人可能知道答案,请与他/她分享链接.

java classloader dependency-management maven

8
推荐指数
1
解决办法
195
查看次数

标签 统计

classloader ×1

dependency-management ×1

java ×1

maven ×1