Использование двух версий 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.