Использование двух версий guava в проекте maven

У меня есть проект, который использует стороннюю библиотеку (пакет netapp nmsdk, но это не очень актуально). Эта библиотека, похоже, использует guava r08 и специально вызывает com.google.commons.io.NullPointerStream. Проблема в том, что класс был удален после r15. Помимо этого, библиотека, похоже, не знает о своих зависимостях, поэтому мы должны вручную включить guava r08 в наш проект, чтобы приложение могло найти класс во время выполнения.

Теперь мы используем гуаву в нескольких местах, но, к сожалению, нам требуются функции, найденные в более новой версии гуавы. Таким образом, позже в нашем проекте pipe-stack-независимо от того, мы ссылаемся на r21, текущую версию.

Но maven исключает временную зависимость для r08 в пользу r21, так что теперь у нас нет требуемого класса во время выполнения!

Я пытался заставить затенение работать, но так как оно, кажется, не вводит классы с r08, нечего затенять.

Может кто-нибудь помочь мне разобраться, как "включить" необходимые временные файлы в r08 наряду с явной зависимостью от r21. Кроме того, если я на неправильном пути, могу ли я получить правильные указания? Спасибо!

РЕДАКТИРОВАТЬ: Я хотел прямо заявить, что сторонняя библиотека, кажется, не является надлежащим артефактом Maven, и является полностью закрытым источником, к которому у нас нет доступа.

РЕДАКТИРОВАТЬ 2: Хорошо, поэтому я солгал ранее, на самом деле это три проекта (хорошо, вы меня поймали, их 12, но только 3 имеют значение).

  • Сторонняя библиотека требует Guavar08 и выдает исключение ClassNotFound во время выполнения. Сторонняя библиотека не имеет временных зависимостей или включенных зависимостей.
  • Project-A использует стороннюю библиотеку и имеет guava r08, поэтому сторонняя библиотека может найти ее во время выполнения.
  • Project-B использует Project-A, а также Guava 21.
  • Project-C использует Project-A, Project-B и сам по себе не использует гуаву.
  • Жирная банка построена из профиля Project-C.

0 ответов

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