我的项目取决于依赖关系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
指令在我的情况下不起作用。
答案 0 :(得分:5)
你不能为jar文件做这件事。
您可以排除传递依赖项(在pom文件中描述)。 jar文件不是传递依赖。