Gradle. Скажите зависимость использовать другую версию уже включенной зависимости - PullRequest
0 голосов
/ 19 апреля 2019

Пример:

implementation(group: 'org.seleniumhq.selenium', name: 'selenium-remote-driver', version: '3.13.0')
implementation(group: 'com.mypack', name: "old-library", version: '1.0')

Проблема в том, что old-library бросает java.lang.NoClassDefFoundError: org/openqa/selenium/remote/SessionNotFoundException, чего нет в новых версиях селена. К сожалению, у меня нет доступа к исходному коду. Вопрос - можно ли сказать только для old-library использовать старую версию селена?

1 Ответ

0 голосов
/ 22 апреля 2019

хорошо, это невозможно.как я понял из чата Gradle Slack:

, тогда нет способа решить его без перемещения пакета зависимостей

на самом деле, в этом случае проблема даже не на уровне пути к классам, потому что если2 зависимости имеют одинаковый идентификатор. Gradle должен выбрать одну из них.Если вы измените только идентификатор зависимости, у вас будут проблемы во время выполнения, потому что 2 зависимости со многими конфликтующими классами будут находиться в одном и том же пути к классам.Это верно для Java, но какая версия будет выбрана в зависимости от разрешения пути к классу, зависит от загрузчика классов, и вы не можете полагаться на это

...