@vildaraj

Как ограничить область действия зависимостей?

Здравствуйте,
есть библиотека, ее можно получить через maven-репозиторий. У этой библиотеки есть много зависимостей, но эти зависимости устарели. Она зависит от springframework 3.0.1, но в своем web-сервисе я хочу использовать последний spring (5.1.5). Так вот: после сборки проекта и установки последненго spring intelij idea использует не последний spring, а берет старый (версия 3) из зависимостей библиотеки.
Как можно ограничить область видимости зависимостей, чтобы spring 3 использовала только эта библиотека, а моя программа, зависящая от этой библиотеки, использовала spring 5.1.5 ?

Я попробовал собрать вручную jar-файл, но то же самое - никак не могу область старого sping ограничить.
Была идея обновить все зависимости этой биболитеки самому, но это очень долго, проект большой и там очень много зависимостей.
  • Вопрос задан
  • 243 просмотра
Решения вопроса 1
Vamp
@Vamp
Лучше всего форкнуть проект библиотеки и переписать код на spring 5. Возможно это будет не слишком трудоёмко, учитывая, что зависимость от spring у библиотеки транзитивная. То есть в коде библиотеки может и не быть кода, зависящего от spring, поэтому может быть достаточно обновить только версию непосредственной зависимости, которая уже тащит spring.

Альтернативным вариантом является использование maven-shade-plugin. Этот плагин упаковывает зависимости проекта в единый jar файл и, опционально, может перемещать классы в другой пакет. Фича называется class relocation. То есть вы можете собрать shaded версию библиотеки soap-ws, у которой классы spring будут релоцированы из пакета org.springframework в, например, vildaraj.shaded.org.springframework. В этом случае вы можете в основном проекте использовать какую угодно версию spring без конфликтов.
Ответ написан
Комментировать
Пригласить эксперта
Ответы на вопрос 1
@aol-nnov
> позволяет из wsdl строить soap request или response

ну, не знаааю.. стоит ли некромантией заниматься, воскрешая прогу шестилетней давности..

вон, через jaxb стабов нафигачил, потом херак-херак и в продакшн :) чем не вариант? сам так делал :))
Ответ написан
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Похожие вопросы