Maven: Есть ли способ проверить, совместима ли конкретная версия дочерней зависимости с родительской? - PullRequest
1 голос
/ 31 мая 2019

enter image description here

У меня есть зависимость janusgraph-cassandra в моем проекте, которая дает cassandra-all переходную зависимость с ним.

Теперь я пытаюсь обновитьcassandra-all зависимость от 2.1.20 до 3.11.4 , но, похоже, она не совместима с родительской janusgraph-cassandra 0.3.1 .

Есть ли способ проверить совместимость версий между родительскими и транзитивными зависимостями?Или следует принять эмпирическое правило о том, что совместимы только версии, которые артефакт maven сам создает?

1 Ответ

1 голос
/ 01 июня 2019

Цель maven dependency:tree - это способ определить, где у вас могут быть конфликтующие зависимости, но установление совместимости - более сложный вопрос, который не может быть решен maven самостоятельно.

Установление совместимости версий иногда довольно сложно. Основная причина в том, что не существует принудительных правил о том, что диктуется, когда в библиотеке происходят критические изменения.

Популярным способом передачи совместимости является использование предсказуемой стратегии управления версиями. Семантическое управление версиями - одна из таких популярных стратегий, которая требует:

Учитывая номер версии MAJOR.MINOR.PATCH, увеличить:

ОСНОВНАЯ версия при несовместимых изменениях API,

ОСНОВНАЯ версия, когда вы добавляете функциональность обратно-совместимым способом, и

Версия PATCH, когда вы делаете обратно совместимые исправления ошибок.

Как говорится, cassandra-all не претендует на то, чтобы следовать этому. Кассандра - это база данных, а не столько библиотека. Известно, что между второстепенными версиями нарушаются изменения API, и я уверен, что это происходило между версиями патчей.

Если вы используете janusgraph, я бы предложил привязать себя к версии Кассандры, от которой она утверждает, что зависит.

Однако, если вы запускаете janusgraph с cassandra, используя Режим удаленного сервера , я ожидаю, что вы можете обновить кластер Cassandra до 3.11.4, и все должно продолжаться.

Вполне вероятно, что только при использовании Embedded Mode используется cassandra-all.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...