У меня есть плагин Findbugs в моем основном файле build.gradle
. Чтобы остановить жалобу, рассмотрим некоторые проблемы, которые я добавил annotation.jar
и jsr305.jar
в папку моих libs, и я использую @SuppressFBWarnings
везде, где это необходимо.Gradle, как исключить класс/пакет из файла jar зависимости?
Я получаю следующее сообщение об ошибке, когда я пытаюсь построить мой project.: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 :(
Итак, я ищу способ, чтобы исключить класс из зависимого файла банку, если это возможно. У нас есть кое-что для модулей для кажется, не possile для фляги файла.
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 { основных { Java { включает «ком/Ourcompany/somepackage/activityadapter/**» включают 'ком/Ourcompany/someotherpackage/**' исключить 'ком/Ourcompany/someotherpackage/опрос/**' }} } оригинальный SO пост здесь http://stackoverflow.com/questions/ 27965690/Gradle-исключить или добавьте ссылки -for-jar-file-hard-included-inside-library-class –
@DougRay Спасибо, человек. Да, я видел это предложение, и мы используем его для некоторых других классов. Но это предотвращает включение нашего класса в файл jar. То, что я ищу, у меня есть jar, и я хочу сказать buid-систему, которая не включает класс. Я на самом деле не уверен, что моя идея работает :( – Hesam
hmmm ok ну следующий лучший шаг, вероятно, будет заключаться в том, чтобы выбрать документацию по градиенту. Вероятно, вокруг закрытия java https://docs.gradle.org/current/userguide/java_plugin. HTML. –