У меня есть зависимость janusgraph-cassandra
в моем проекте, которая приносит с собой cassandra-all
транзитивную зависимость.
Теперь я пытаюсь обновить cassandra-all
зависимость с 2.1.20 на 3.11.4, но она не совместима с родительской janusgraph-cassandra
0.3.1.
Есть ли способ проверить совместимость версий между родительскими и транзитивными зависимостями? Или следует принять за эмпирическое правило, что совместимы только версии, которые артефакт maven приносит сам по себе?
Цель maven dependency:tree
— это средство для определения того, где у вас могут быть конфликтующие зависимости, но установление совместимости — это более сложный вопрос, который maven не может решить самостоятельно.
Установить, есть ли совместимость между версиями, иногда довольно сложно. Основная причина заключается в том, что не существует обязательных правил о том, что диктует, когда в библиотеке есть критические изменения.
Популярный способ сообщить о совместимости — использовать предсказуемую стратегию управления версиями. Семантическое управление версиями — одна из таких популярных стратегий, которая требует:
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, от которой, как утверждается, зависит.
Однако, если вы используете janusgraph с cassandra с использованием Режим удаленного сервера, я ожидаю, что вы можете обновить кластер Cassandra до 3.11.4, и все должно продолжать работать.
Скорее всего, только при использовании Встроенный режим используется cassandra-all
.
Во-первых, на основе изменения версии с 2.X на 3.X, что является основным изменением версии, я бы подозревал, что изменения ... и да, ваше предположение с моей точки зрения и опыт - хорошая идея. Если вам нужно проверить иначе вы должны написать соответствующие тесты, чтобы проверить это.