从所有配置中排除多个可传递的依赖项



我在android Studio中开发android项目时遇到了一个问题。

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

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

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

所以,我知道我可以使用"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
.

谢谢你的帮助。

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

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

最新更新