0

我有 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。因此excludes 标签在这种情况下不起作用。我需要向特定模块注入依赖项。

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

4

2 回答 2

1

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

于 2014-03-30T09:58:28.293 回答
1

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

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

于 2014-03-30T09:07:14.577 回答