В такой конфигурации:
Project
-ModuleA
implementation lib:1.1
implementation project(:ModuleB)
-ModuleB
api lib:1.2
-ExternalJar1
-lib1.3
-ExternalJar2
-lib1.4
Как Gradle определяет, какую версию lib выбрать? В соответствии с этим SO ответом будет выбрана версия 1.4, поскольку она является самой высокой версией, и мы не указали «какие-либо конкретные ограничения для разрешения переходных зависимостей» . Если это правильно, не нарушится ли код ModuleA, если он не ожидает более новой версии? Как я могу это исправить?
Живут ли внешние библиотеки (импортированные файлы jar) в закрытой песочнице - не подвергая свои зависимости пути к классам проекта и не используя зависимости проекта в своем пути к классам? Предполагая, что версии 1.3 и 1.4 не совместимы, я не могу даже принудительно установить одну версию, как предложено в этом SO post , какой вариант мне нужно исправить эту настройку?