Это распространенная проблема в мире Java.
Ваши лучшие варианты - регулярно поддерживать и обновлять зависимости для packageA и packageB.
Если у вас есть контроль над этими приложениями - найдите время, чтобы сделать это. Если у вас нет контроля, потребуйте, чтобы поставщик или автор регулярно обновлялись.
Если как packageA, так и packageB используются для внутренних целей, вы можете использовать следующую практику: все внутренние проекты в вашей компании ссылаются на parent
в maven pom.xml
, который определяет «современные» версии часто используемых третьих партийные библиотеки.
Например:
<framework.jersey>2.27</framework.jersey>
<framework.spring>4.3.18.RELEASE</framework.spring>
<framework.spring.security>4.2.7.RELEASE</framework.spring.security>
Поэтому, если ваш проект «A» использует spring, если они используют последнюю версию «родительского» pom вашей компании, они оба должны использовать 4.3.18.RELEASE.
Когда будет выпущена и желательна новая версия spring, вы обновите родительский pom своей компании и заставите все остальные проекты использовать эту последнюю версию.
Это решит многие из этих проблем несоответствия зависимостей.
Не волнуйтесь, это обычное явление в мире Java, вы не одиноки. Просто погуглите «jar hell», и вы поймете проблему в более широком контексте.
Кстати, mvn dependency:tree
- ваш друг, который изолировал эти проблемы с зависимостями.