我有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教程或其他解决方案,那就太棒了。
答案 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 plugin和relocation。这将包括项目中的C类。而且因为C获得了不同的包路径,所以不再有任何类冲突。