从所有配置中排除多个传递依赖关系

时间:2016-01-07 17:01:40

标签: android-studio gradle dependencies build.gradle

我在Android Studio中开发Android项目时遇到了问题。

我使用多个* .jar扩展名文件作为我项目的库。 但是,它们之间有共同的类,即具有相同类名和相同包名的类。 * .jar扩展文件是:rt.jar和tools.jar。 " rt.jar"文件是从Debian OS(x86)的OpenJDK6 jre二进制文件获得的。 " tools.jar"文件是从Beads Library文件获得的,也就是说,它来自" Beads.z​​ip"文件和" Beads.z​​ip"文件位于:http://www.beadsproject.net/。我正在Android Studio中开发一个新的基于Beads的android项目。顺便说一句,我需要一个Android OS的JavaSound实现,因为Beads库需要一个JavaSound实现。所以,我想在Android Studio的基于Beads的android项目中使用OpenJDK中的javaRT,但是我发现了这个项目库中的冗余* .class扩展文件的问题" rt.jar"和" tools.jar"。

顺便说一句,我需要在调试模式"" app执行过程中排除多余的* .class扩展文件。 (相应的按钮被称为:在Android Studio中运行' app'),或者在" apk构建过程"中,使用Gradle工具,即&#34 ; classes.dex"文件创建/操作。

我搜索了网页,我在stackoverflow.com网站上找到了一些信息......然后,我使用了" multiDexEnabled true"在" defaultConfig"解决以前的一些问题的定义。

所以,我知道我可以使用" configurations.compile.transitive = false"尝试解决我的问题,但它没有工作。顺便说一句,我尝试使用:

configurations {
all*.exclude group: 'sun', module: 'sun.applet'
all*.exclude group: 'sun', module: 'sun.tools.jar'
}

,或

configurations {
all*.exclude group: 'sun', module: 'sun.applet'
}

configurations {
all*.exclude group: 'sun', module: 'sun.tools.jar'
}
例如,

,但他们都没有工作。

我试过了:

dependencies {
compile files('lib/tools.jar') {
exclude group: 'sun', module: 'sun.applet'
exclude group: 'sun', module: 'sun.tools.jar'
}
}

,但它既没有工作,也没有。

我不知道这些语句是否有助于在此apk构建过程中排除冗余的* .class扩展Java文件,但我认为它们不是。

此问题中引用的网页链接为:
https://discuss.gradle.org/t/how-can-i-exclude-all-transitive-dependencies/6875

感谢您的帮助。

1 个答案:

答案 0 :(得分:1)

从所有配置中排除的正确格式为:

configurations {
  compile.exclude group: 'xml-apis', module: 'xmlParserAPIs'
  compile.exclude group: 'org.slf4j', module: 'slf4j-simple'
}