我有两个 maven 项目:projA和projB
projB 取决于 projA
projB 取决于泽西岛2.15
projA 取决于hbase-testing-utils
hbase-testing-utils取决于Jersey 1.8.x
如果 projB 声明对 projA 的依赖性而没有任何排除,那么 projB 的测试会失败,因为它们使用了错误的版本( 1.8.x)Jersey项目中的某些类。
如果 projB 声明对 projA 的依赖关系以及泽西组件的排除项,那么上述问题就会消失。但新问题是在测试运行期间,由于排除, projA 无法找到ServletContainer(Jersey 1.8.x)。 projA 使用hbase测试工具来启动内存中使用Jersey 1.8.x的内置hbase服务器。
我需要在projB中使用Jersey 2.15,但我还需要从projA中排除Jersey 1.8.x,以避免因使用错误的版本类而导致Null Pointer Exceptions。
如何解决这个问题?
答案 0 :(得分:1)
也许你可以从对projA的依赖中排除jersey,并将其单独添加,但范围为“test”。
这应该可以用于测试,但不能用于其他阶段。
答案 1 :(得分:0)
Jersey 2是JAX-RS 2的实现。泽西1.8是JAX-RS的实现1. JAX-RS 2不向后兼容,并且一些方法签名相互冲突。您不能在同一个项目中包含Jersy1.8和Jersey2。它将编译但在运行时将失败。