kyberorg
@kyberorg

Как избавиться конфликта зависимостей в maven?

Ситуация:
Приложение A зависит от двух библиотек B (версия 1.4) и C (версия 1.0.3). В свою очередь С тоже использует библиотеку B (версии 1.3).
Между версиями 1.3 и 1.4 нет полной обратной совместимости.

Из-за этого после перехода приложения А на использование библиотеки B версии 1.4, приложение стало падать в Runtime. Ошибка возникает в библиотеке C (ругается на отстутствие нужного класса).

Два вопроса:
1) Почему библиотека C использует версию 1.4 библиотеки В, хотя у неё в pom.xml в зависимостях версия 1.3 ?
2) Как, кроме отката версии библиотеки B до 1.3, починить приложение А ?

Заранее спасибо.
  • Вопрос задан
  • 3309 просмотров
Решения вопроса 1
FanKiLL
@FanKiLL
Maven Optional Dependencies and Dependency Exclusions

upd:
А вообще это вам наверно не поможет, можно попробовать обмануть мавен.
Сделать как написано по ссылке что я дал, убрать версию 1.3
<dependency>
    <groupId>библиотека С</groupId>
    <artifactId>её имя</artifactId>
    <version>версия</version>
      <exclusions>
        <exclusion> 
          <groupId>библиотека</groupId>
          <artifactId>её id</artifactId>
        </exclusion>
</dependency>


Скачать версию 1.3 и установить её руками под другим groupId в локальный репозиторий например
mvn install:install-file -Dfile=toster.jar 
    -DgroupId=ru.toster -DartifactId=toster-api -Dversion=0.0.1 
    -Dpackaging=jar


и потом добавить в pom
<dependency>
    <groupId>ru.toster</groupId>
    <artifactId>toster-api</artifactId>
    <version>0.0.1</version>
</dependency>


Тогда по идее обе библиотеки попадут в classpath.
Ответ написан
Пригласить эксперта
Ваш ответ на вопрос

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

Войти через центр авторизации
Похожие вопросы