Gradle, разные версии прямых и транзитивных зависимостей

Предположим, application модуль build.gradle

dependencies {
    implementation "com.example.http:core:5.1"
    implementation "com.example.common:network:1.0"
}

И http основной сторонний проект buid.gradle

dependencies {
    implementation "com.example.common:network:2.0"
}

(так что .pom http имеет зависимость от network 2.0 внутри)

В этом случае gradle выберет network модуль версии 2.0 для модулей application и http.
Но как я могу заставить gradle использовать обе версии network: 1.0 как прямые application и 2.0 как транзитивные http зависимости?


person Alexey    schedule 08.10.2020    source источник


Ответы (1)


Существует метод разрешения конфликтующих зависимостей, который называется shadow jar.

Довольно удобно, что для их создания существует отличный плагин gradle.

person DelfikPro    schedule 08.10.2020
comment
Это сработает только в том случае, если вы переместите пакеты, а это не всегда легко сделать. - person Bjørn Vester; 09.10.2020