我有一个 janusgraph-cassandra
我的项目中的依赖性 cassandra-all
可传递的依赖关系。
现在我正在尝试升级 cassandra-all
从2.1.20到3.11.4的依赖关系,但它似乎与父级不兼容 janusgraph-cassandra
0.3.1.
有没有办法检查父依赖项和可传递依赖项之间的版本兼容性?或者应该把只有maven工件自己带来的版本是兼容的作为一条经验法则吗?
我有一个 janusgraph-cassandra
我的项目中的依赖性 cassandra-all
可传递的依赖关系。
现在我正在尝试升级 cassandra-all
从2.1.20到3.11.4的依赖关系,但它似乎与父级不兼容 janusgraph-cassandra
0.3.1.
有没有办法检查父依赖项和可传递依赖项之间的版本兼容性?或者应该把只有maven工件自己带来的版本是兼容的作为一条经验法则吗?
1条答案
按热度按时间pbwdgjma1#
专业人士
dependency:tree
目标是一种确定哪些地方可能存在相互冲突的依赖关系的方法,但是建立兼容性是一个更复杂的问题,maven本身无法解决。确定版本之间是否存在兼容性有时是相当困难的。主要原因是没有强制的规则来决定库何时发生了破坏性的更改。
通信兼容性的一种流行方式是使用可预测的版本控制策略。语义版本控制是一种流行的策略,它要求:
给定版本号major.minor.patch,增加:
主要版本当您进行不兼容的api更改时,
以向后兼容的方式添加功能时的次要版本,以及
修补程序版本时,你向后兼容的错误修复。
话虽如此,
cassandra-all
不声称遵循这一点。Cassandra是一个数据库,而不是一个图书馆。在小版本之间有已知的破坏性api更改,我打赌它已经知道在补丁版本之间发生。如果您使用的是janusgraph,我建议您绑定到它声称依赖的cassandra版本。
但是,如果您使用远程服务器模式运行带有cassandra的janusgraph,我预计您可以将cassandra集群升级到3.11.4,并且应该继续工作。
很可能只有在使用嵌入式模式时
cassandra-all
已使用。