如何修复依赖版本冲突



我有两个不同的模块A和b,我还有另一个模块c

A使用C版本1.0

B使用C版本2.0

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

我发现我可以使用OSGI来实现这个目的,但我不能使它工作。如果你有任何OSGI教程或其他解决方案,那就太好了。

如果不使用OSGI,还可以重构应用程序,以便在单独的WAR文件上运行A和B,在web应用程序服务器上运行。

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

尝试在项目A和/或b上重新定位Maven Shade插件。这将包括C类到您的项目。而且因为C得到了不同的包路径,所以不会再有任何类冲突了。

最新更新