如何修复依赖版本冲突?

时间:2014-03-30 09:02:16

标签: java maven intellij-idea apache-felix maven-bundle-plugin

我有2个不同的模块,分别叫做A和B.我还有另一个名为C的模块。

A使用C版本1.0

B使用C版本2.0

问题是因为C 2.0不向后兼容,即使C 1.0和C 2.0的groupId和artifactId值相同,我也不能在我的pom.xml中排除其中一个并使用另一个用于A和B.因此,排除标签在这种情况下不起作用。我需要为特定模块注入依赖项。

我发现我可以将OSGI用于此目的,但我无法使其工作。如果您有任何OSGI教程或其他解决方案,那就太棒了。

2 个答案:

答案 0 :(得分:1)

在不使用OSGI的情况下,可以选择重构应用程序,以便在单独的WAR文件上运行A和B,这是在Web应用程序服务器中运行的情况。

这样WAR 1包含A和C 1.0,WAR 2包含B和C 2.0,在这种情况下没有干扰。

答案 1 :(得分:1)

在项目A和/或B上尝试Maven Shade pluginrelocation。这将包括项目中的C类。而且因为C获得了不同的包路径,所以不再有任何类冲突。