Maven: Есть ли способ проверить, совместима ли конкретная версия дочерней зависимости с родительской?

Maven: Есть ли способ проверить, совместима ли конкретная версия дочерней зависимости с родительской?

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

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

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

Во-первых, на основе изменения версии с 2.X на 3.X, что является основным изменением версии, я бы подозревал, что изменения ... и да, ваше предположение с моей точки зрения и опыт - хорошая идея. Если вам нужно проверить иначе вы должны написать соответствующие тесты, чтобы проверить это.

khmarbaise 31.05.2019 08:42
Не удалось выполнить цель org.apache.maven.plugins
Не удалось выполнить цель org.apache.maven.plugins
Опишу, что когда я только начинал изучать Maven, у меня не получалось компилировать и упаковывать.
Blibli Automation Journey - Как захватить сетевой трафик с помощью утилиты HAR в Selenium 4
Blibli Automation Journey - Как захватить сетевой трафик с помощью утилиты HAR в Selenium 4
Если вы являетесь веб-разработчиком или тестировщиком, вы можете быть знакомы с Selenium, популярным инструментом для автоматизации работы...
1
1
346
1
Перейти к ответу Данный вопрос помечен как решенный

Ответы 1

Ответ принят как подходящий

Цель 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.

Другие вопросы по теме