我有一个关于maven传递依赖的问题。
我有一个项目A,依赖于项目b和Spring2.x,但依赖于项目b依赖Spring3.x
您知道spring框架拆分了几个模块。
所以问题如下。
如果我将项目A中的spring3.x依赖项排除在外,恐怕项目无法运行,因为项目b需要spring3.x api,而项目A依赖项B
如果我删除项目A中的spring2.x,恐怕项目A也不能运行,可能在spring3.x中删除了一些旧的api
对于这种情况,有人有解决方案吗?
发布于 2014-12-08 16:11:58
这不是maven或spring的问题--它更多地与您的软件设计有关。您需要决定使用哪个spring版本。通常,升级spring并不是最大的麻烦,有时你需要改变依赖集,因为它们会移动东西--但谷歌在这方面很有帮助--或者findjar.com。
我假设A和B都在同一进程(或类加载器)中运行?您不是要单独部署它们?因此,您需要决定使用哪个spring版本。如果您不能更改项目B中的依赖项,请使用它们的spring版本。如果可以:使用较新的版本并升级项目B中的spring。
遗憾的是,Maven没有包含一个神奇的jar机制。如果你需要同一个jar的不同版本,像OSGi这样的东西可能会有帮助--但这是一个很长的机会。也是一个很复杂的问题。而且通常不是必须的。Maven (正如您已经注意到的)帮助您管理依赖项。使用哪一个取决于您的选择。
https://stackoverflow.com/questions/27353713
复制相似问题