При создании проекта maven, который имеет много зависимостей, некоторые из этих зависимостей зависят от одной и той же библиотеки, но используют другую версию, которая вызывает ошибки при запуске приложения.
Например, если я добавляю две разные зависимости проекта: A и B, которые оба зависят от HTTP-клиента apache, а каждый из них в другой версии, как только загрузчик классов загружает классы HTTP-клиента apache, B будет пытаться используйте их, поскольку они уже загружены загрузчиком классов.
Но байт-код B зависит от другой версии загруженных классов, вызывающих множество проблем при запуске приложения. Общим является метод notnound exception (поскольку версия http-клиента больше не использует конкретный метод).
Какова общая стратегия при построении, чтобы избежать таких конфликтов? Нужно ли вручную проверять дерево зависимостей, чтобы выяснить, какие общие библиотеки совпадают друг с другом?