Maven:有没有办法检查特定版本的子依赖项是否与父项兼容?

Maven : Is there a way to check if a particular version of child dependency is compatible with parent?

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

现在我正在尝试将 cassandra-all 依赖项从 2.1.20 升级到 3.11.4 但似乎没有与父 janusgraph-cassandra 0.3.1 兼容。

有没有办法检查父依赖和传递依赖之间的版本兼容性? 还是应该将只有 Maven 工件自身带来的版本兼容作为经验法则?

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

确定版本之间是否存在兼容性有时是相当困难的。主要原因是没有关于库何时发生重大更改的规定的强制性规则。

传达兼容性的一种流行方式是使用可预测的版本控制策略。 Semantic Versioning 是一种非常流行的策略,要求:

Given a version number MAJOR.MINOR.PATCH, increment the:

MAJOR version when you make incompatible API changes,

MINOR version when you add functionality in a backwards-compatible manner, and

PATCH version when you make backwards-compatible bug fixes.

话虽这么说,cassandra-all 并不声称遵循这一点。 Cassandra 是一个数据库,而不是一个图书馆。在次要版本之间,已知会发生重大 API 更改,而且我敢打赌,已知在补丁版本之间会发生这种情况。

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

但是,如果您 运行 使用 Remote Server Mode 和 cassandra 的 janusgraph,我预计您可以将 Cassandra 集群升级到 3.11.4,并且应该会继续工作。

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