【发布时间】:2016-01-28 19:12:35
【问题描述】:
我的主要 build.gradle 文件中有 Findbugs 插件。为了停止它对一些问题的抱怨,我已将annotation.jar 和jsr305.jar 添加到我的libs 文件夹中,并在需要时使用@SuppressFBWarnings。
当我尝试构建我的项目时遇到以下错误。:passenger-
app:dexTaxDebug
UNEXPECTED TOP-LEVEL EXCEPTION:
com.android.dex.DexException: Multiple dex files define Ljavax/annotation/CheckForNull;
at com.android.dx.merge.DexMerger.readSortableTypes(DexMerger.java:596)
at com.android.dx.merge.DexMerger.getSortedTypes(DexMerger.java:554)
at com.android.dx.merge.DexMerger.mergeClassDefs(DexMerger.java:535)
at com.android.dx.merge.DexMerger.mergeDexes(DexMerger.java:171)
at com.android.dx.merge.DexMerger.merge(DexMerger.java:189)
at com.android.dx.command.dexer.Main.mergeLibraryDexBuffers(Main.java:502)
at com.android.dx.command.dexer.Main.runMonoDex(Main.java:334)
at com.android.dx.command.dexer.Main.run(Main.java:277)
at com.android.dx.command.dexer.Main.main(Main.java:245)
at com.android.dx.command.Main.main(Main.java:106)
Error:Execution failed for task ':passenger-app:dexTaxDebug'.
> com.android.ide.common.process.ProcessException: org.gradle.process.internal.ExecException: Process 'command '/usr/lib/jvm/java-8-oracle/bin/java'' finished with non-zero exit value 2
注意:我知道一个解决方案是激活 multidex Building Apps with Over 65K Methods。我也不相信 Progard :(
所以,如果可能的话,我正在寻找一种从依赖 jar 文件中排除类的方法。我们有一些模块的东西,因为 jar 文件似乎是不可能的。
compile('com.google.android.gms:play-services-analytics:7.3.0') {
exclude group: 'com.google.android.gms', module: 'play-services-base'
}
我的主要build.gradle 文件中有什么
configure(allprojects) {
apply plugin: 'findbugs'
task findbugs(type: FindBugs) {
ignoreFailures = false
effort = "max"
classes = fileTree('build/intermediates/classes/')
source = fileTree('src/main/java')
classpath = files()
excludeFilter = file("$rootProject.rootDir/config/findbugs/exclude.xml")
reportLevel = "high"
reports {
xml.enabled = false
html.enabled = true
}
}
}
以及我的依赖项目中的这些依赖
dependencies {
....
// Findbugs libs in order to surpass warnings
compile files('src/main/libs/annotations.jar')
compile files('src/main/libs/jsr305.jar')
....
}
任何建议将不胜感激。
【问题讨论】:
-
这应该允许你不包括来自你的 jar.sourceSets { main { java { include 'com/ourcompany/somepackage/activityadapter/**' include 'com/ourcompany/someotherpackage/** ' exclude 'com/ourcompany/someotherpackage/polling/**' } } } 原帖在这里stackoverflow.com/questions/27965690/…
-
@DougRay 谢谢老兄。是的,我看到了这个建议,我们正在将它用于其他一些课程。但这会阻止我们的类被包含到 jar 文件中。我正在寻找的东西是我有 jar 并且我想告诉 buid 系统不包含一个类。我实际上不确定我的想法是否有效:(
-
hmmm 好吧,下一个最好的步骤可能是浏览 gradle 文档。可能围绕 java 闭包 docs.gradle.org/current/userguide/java_plugin.html.
标签: android jar android-gradle-plugin