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"
}

(因此http的.pom内部具有network 2.0的依赖项)

在这种情况下,gradle将为networkapplication模块选择版本2.0的http模块。
但是,如何使gradle使用network的两个版本:1.0作为直接的application和2.0作为可传递的http依赖项?

解决方法

有一种解决冲突依赖性的技术称为 shadow jar。

很方便的是,有一个awesome gradle plugin用于构建它们。