如何在Gradle中排除传递jar依赖?

时间:2018-01-24 08:50:05

标签: java android gradle dependency-management

我的项目取决于依赖关系A和依赖关系B.

依赖关系A还取决于依赖关系B,但是它的版本不同。

问题在于项目A的build.gradle依赖关系B直接使用文件和fileTree方法包含在jar中:

dependencies {
    compile fileTree(dir: 'libs', include: ['*.jar'])
    compile files('libs/B.jar')
}

我的项目build.gradle如下所示:

dependencies {
    compile 'com.B:B:myvesion'
    compile('com.A:A:theirversion') {
        exclude module: 'B'
    }
}

但我的构建失败了,但是这个例外:

Execution failed for task ':myproject:transformDexArchiveWithDexMergerForDebug'.
> com.android.build.api.transform.TransformException: com.android.dex.DexException: Multiple dex files define Lcom/B/someclass;

我想从我的项目中排除jar版本的B并使用我的版本。我该怎么做呢?好像exclude指令在我的情况下不起作用。

1 个答案:

答案 0 :(得分:5)

你不能为jar文件做这件事。

您可以排除传递依赖项(在pom文件中描述)。 jar文件不是传递依赖。