Вы можете исключить все транзитивные зависимости или только одну за другой, а затем включить нужную версию в свой файл build.gradle
.
Способ 1 — исключение всех зависимостей библиотеки
Используйте поле transitive
, чтобы указать Gradle, что вы не хотите разрешать транзитивные зависимости. В документации transitive
говорится:
Устанавливает, должна ли эта зависимость быть разрешена, включая или исключая ее транзитивные зависимости. Артефакты, принадлежащие этой зависимости, могут сами иметь зависимости от других артефактов. Последние называются транзитивными зависимостями.
Пример:
compile('com.super.lib:awesome@aar') {
transitive = false
}
Способ 2. Выберите, какие зависимости вы не хотите включать
Используйте метод exclude
, который:
Добавляет правило исключения для исключения транзитивных зависимостей этой зависимости.
Пример:
compile('com.super.lib:awesome@aar') {
exclude group: 'com.dont.want.this', module: 'old-artifact'
}
Обратите внимание, однако, что это не гарантирует, что исключенная зависимость не будет подтянута другой зависимостью. Если вы хотите исключить зависимость отовсюду, используйте стратегию исключения для всей конфигурации:
configurations.all {
exclude group: 'com.dont.want.this', module: 'old-artifact'
}
Кроме того, вам необходимо указывать имена group
и module
одновременно. Этот пример взят из JavaDoc gradle:
dependencies {
compile('org.hibernate:hibernate:3.1') {
//excluding a particular transitive dependency:
exclude module: 'cglib' //by artifact name
exclude group: 'org.jmock' //by group
exclude group: 'org.unwanted', module: 'iAmBuggy' //by both name and group
}
}
ПРЕДУПРЕЖДЕНИЕ
Просто дружеское напоминание об опасностях изменения номеров версий зависимостей.
Когда вы меняете версии зависимостей с помощью этого метода, вы должны тщательно протестировать приложение, потому что в более новых/старых версиях зависимостей могут быть критические изменения или неожиданное поведение. Совершенно очевидно, что скачок основного номера версии, скорее всего, приведет к сбоям / неожиданному поведению, но вы должны обращать внимание даже на часть patch номера версии, поскольку создатель библиотеки можно было ожидать, что используемая версия зависимости содержала некоторые ошибки и включала некоторые исправления, которые могли сломать библиотеку после исправления ошибки.
person
Gergely Kőrössy
schedule
19.09.2017