[英]Gradle, how to exclude a class/package from dependency jar file?
I have Findbugs plugin in my main build.gradle
file. 我的主要
build.gradle
文件中有Findbugs插件。 In order to stop its complain regard some issues I have added annotation.jar
and jsr305.jar
into my libs folder and I'm using @SuppressFBWarnings
wherever needed. 为了避免抱怨,我将一些
annotation.jar
jsr305.jar
和jsr305.jar
添加到我的libs文件夹中,并在需要的地方使用@SuppressFBWarnings
。
I'm getting following error when I try to build my project.:passenger- 尝试构建项目时出现以下错误。: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
Note: I know a solution is activating multidex Building Apps with Over 65K Methods . 注意:我知道有一个解决方案可以通过65K多个方法激活multidex Building Apps 。 I also don't believe Progard :(
我也不相信Progard :(
So, I'm looking for a way to exclude a class from dependent jar file if it's possible. 因此,我正在寻找一种从可能的jar文件中排除类的方法。 We have something for modules for seems is not possile for jar file.
我们有一些用于模块的东西,对于jar文件来说似乎不是可能的。
compile('com.google.android.gms:play-services-analytics:7.3.0') {
exclude group: 'com.google.android.gms', module: 'play-services-base'
}
What I have in my main build.gradle
file 我的主
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
}
}
}
and these dependencies in my dependency project 这些依赖在我的依赖项目中
dependencies {
....
// Findbugs libs in order to surpass warnings
compile files('src/main/libs/annotations.jar')
compile files('src/main/libs/jsr305.jar')
....
}
any suggestion would be appreciated. 任何建议将不胜感激。
Try modifiying the jar closure like this example maybe 尝试像下面的示例那样修改jar封闭
project(':api:core') {
dependencies {
compile project(':api:schema')
compile project(':api:util')
}
jar {
baseName = 'core'
dependsOn classes
from sourceSets.main.classes
exclude('net/intellidata/core/**/*Impl*')
}
task caaJar(type: Jar) {
baseName = 'caa'
dependsOn classes
from sourceSets.main.classes
include('net/intellidata/core/**/CAA*Impl*')
}
}
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.