#gradle #dependencies #constraints #gradle-dependencies
Вопрос:
Существует библиотека, т. е. io.github.elye:simplekotlinlibrary
с версиями 1.0.0, 2.0.0 и 3.0.0.
Содержать io.github.elye:easyandroidlibrary:1.0.0
io.github.elye:simplekotlinlibrary:1.0.0
Содержать io.github.elye:simpleandroidlibrary:2.0.0
io.github.elye:simplekotlinlibrary:2.0.0
Так что в моем классе, если у меня есть
implementation ('io.github.elye:easyandroidlibrary:1.0.0')
implementation ('io.github.elye:simpleandroidlibrary:2.0.0')
implementation ('io.github.elye:simplekotlinlibrary:3.0.0')
Он автоматически разрешится io.github.elye:simplekotlinlibrary:3.0.0
для проекта, включая переходные зависимости.
Однако, с https://docs.gradle.org/current/userguide/dependency_constraints.html#sec:adding-constraints-transitive-deps, в нем говорится, что constrains
также принудительно выполняется обновление зависимостей до указанной версии 3.0.0
.
implementation ('io.github.elye:easyandroidlibrary:1.0.0')
implementation ('io.github.elye:simpleandroidlibrary:2.0.0')
implementation ('io.github.elye:simplekotlinlibrary')
constraints {
implementation('io.github.elye:simplekotlinlibrary:3.0.0') {
because 'testing force upgrade'
}
}
Насколько я понимаю, два приведенных выше примера приведут к одному и тому же результату. Похоже constraint
, в этом нет реальной пользы? Чем constraint
отличается разрешение различных автоматических зависимостей?
Ответ №1:
Я думаю, что в приведенном выше примере они одинаковы.
Однако в том случае , если проект верхнего уровня не нуждается io.github.elye:simplekotlinlibrary
в использовании constraint
, все равно можно принудительно установить все переходные зависимости по крайней мере до версии, указанной, constraint
как показано ниже.
implementation ('io.github.elye:easyandroidlibrary:1.0.0')
implementation ('io.github.elye:simpleandroidlibrary:2.0.0')
constraints {
implementation('io.github.elye:simplekotlinlibrary:3.0.0') {
because 'testing force upgrade'
}
}
Более подробную иллюстрацию можно найти здесь