有一个多模块项目,jackson的项目版本很老。在其中一个模块中,有必要连接一个需要新jackson的库。当然,我不能只为模块拿这个版本连接,因为那样新版本的jackson会传播到相邻的模块。降级 lib 将不起作用 - 最旧的版本使用太新的 jackson。升级杰克逊的设计版本也不是一种选择——他们不会允许的。解决这些时刻的可能方法是什么。这个库是否有可能使用一个版本的 jackson,而项目的其余部分有旧的. 或者有没有可能正是这个模块使用了新的 jackson,而没有将版本转移到相邻的模块。
或者有没有其他方法可以解决这个问题。
了解了问题后,我得出结论,鉴于我的要求,根本没有办法解决这个问题。在任何情况下,每个项目都应该有一个版本的库,因此对于一般情况,最合适的选项是 2。 1 - 为新库重写整个项目,这在我的项目中是不可能的。2 - 寻找添加的库的类似物,它要么使用所需的杰克逊版本,要么根本不使用它。我最终选择了第二个选项并重写了现有的实现。有问题的库是 Java JWT,作为替代方案,我采用了 Nimbus JOSE + JWT,它通过不同的序列化程序工作。