Suppose application
module build.gradle
dependencies {
implementation "com.example.http:core:5.1"
implementation "com.example.common:network:1.0"
}
And http
core third party project buid.gradle
dependencies {
implementation "com.example.common:network:2.0"
}
(so http
's .pom has dependency of network
2.0 inside)
In this case gradle will choise network
module of version 2.0 for both application
and http
modules.
But how can I make gradle use both versions of network
: 1.0 as direct application
and 2.0 as transitive http
dependencies?
There is a technique for resolving clashing dependencies called shadow jar.
Conviniently enough, there is an awesome gradle plugin for building these.