Maven:有没有一种方法可以检查子版本的特定版本是否与父版本兼容?

时间:2019-05-31 05:50:49

标签: maven cassandra janusgraph

enter image description here

我的项目中有一个janusgraph-cassandra依赖项,它带来了cassandra-all的传递依赖项。

现在,我正在尝试将cassandra-all依赖项从 2.1.20 升级到 3.11.4 ,但它似乎与父级{{1 }} 0.3.1

是否可以检查父级和传递性依赖项之间的版本兼容性? 还是应该凭经验证明,只有Maven工件自带的版本才是兼容的?

1 个答案:

答案 0 :(得分:0)

maven dependency:tree目标是一种方法,用于识别可能存在冲突的依赖关系,但是建立兼容性是一个更复杂的问题,maven本身无法解决。

有时很难确定版本之间是否兼容。主要原因是没有强制性规则规定什么时候库发生重大更改。

交流兼容性的一种流行方法是使用可预测的版本控制策略。 Semantic Versioning是一种强制执行以下流行策略:

  

给出版本号MAJOR.MINOR.PATCH,增加:

     

当您更改不兼容的API时的主要版本,

     

以向后兼容的方式添加功能时的版本,并且

     

进行向后兼容的错误修复时的PATCH版本。

话虽这么说,cassandra-all并没有声称要遵守此规定。 Cassandra是一个数据库,而不是一个库。在次要版本之间,已知有一些重大的API更改,我敢打赌,它在补丁程序版本之间发生。

如果您使用的是janusgraph,我建议您将其绑定到它声称依赖的cassandra版本。

但是,如果您使用Remote Server Mode在cassandra上运行janusgraph,我希望您可以将Cassandra群集升级到3.11.4,并且一切应该继续进行。

可能只有在使用Embedded Mode时才使用cassandra-all