Зависимость Gradle в библиотеке скрывается Spring Boot - PullRequest
1 голос
/ 04 апреля 2019

Сценарий.Я пишу LibraryA, который должен использовать более новую версию библиотеки (в данном случае Caffeine, а именно v2.6.2).Я соберу и отправлю этот артефакт в наш сборочный артефакт

Библиотека A предназначена для использования другими командами (неизвестно мне) в более старой среде Spring Boot 1.5.Проблема в том, что Spring Boot внутренне использует более старую версию Caffeine 2.3.5 (хотя для меня она могла бы использовать более новую).

То, что я вижу во время выполнения, более старая версия доминирует над более новой версией, в результате чего в моей библиотеке нет исключений, не найденных в классе

Есть ли способ, я могу заставить свою библиотеку всегда использовать более новую версию?желаемая версия кофеина.Это было бы легко сделать, если бы я мог контролировать код, используя мою библиотеку, но я бы хотел сделать это в рамках своей библиотеки.Я испробовал все стратегии разрешения зависимостей в документации gradle, но они всегда переопределяются вызывающим приложением (spring-boot)

1 Ответ

2 голосов
/ 04 апреля 2019

Вы должны использовать перемещение пакета из плагин gradle shadow .

В вашем случае вы просто добавляете в свою сборку следующее:

shadowJar {
   relocate 'com.github.benmanes.caffeine', 'shadow.caffeine'
}
...