我的项目中有一个janusgraph-cassandra
依赖项,它带来了cassandra-all
的传递依赖项。
现在,我正在尝试将cassandra-all
依赖项从 2.1.20 升级到 3.11.4 ,但它似乎与父级{{1 }} 0.3.1 。
是否可以检查父级和传递性依赖项之间的版本兼容性? 还是应该凭经验证明,只有Maven工件自带的版本才是兼容的?
答案 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
。