如何在一个Java项目中使用多个版本Jersey(1.8.x和2.15)?

时间:2015-02-17 22:56:53

标签: java maven jersey jersey-2.0

我有两个 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。

如何解决这个问题?

2 个答案:

答案 0 :(得分:1)

也许你可以从对projA的依赖中排除jersey,并将其单独添加,但范围为“test”。

这应该可以用于测试,但不能用于其他阶段。

答案 1 :(得分:0)

Jersey 2是JAX-RS 2的实现。泽西1.8是JAX-RS的实现1. JAX-RS 2不向后兼容,并且一些方法签名相互冲突。您不能在同一个项目中包含Jersy1.8和Jersey2。它将编译但在运行时将失败。