从带有Gradle的Android Studio中的编译中排除.jar

Joa*_*rom 7 android gradle maven android-studio android-gradle-plugin

我目前在build.gradle文件中有这样的东西.

dependencies {
    compile 'com.android.support:support-v4:13.0.+'
    compile ('com.xxx:xxx-commons:1.+') {

    }
}
Run Code Online (Sandbox Code Playgroud)

由于jUnit和hamcrest-core都存在于com.xxx:xxx maven存储库中,因此会出现问题,从而产生如下错误:

Gradle: Origin 1: /Users/yyy/.gradle/caches/artifacts-26/filestore/junit/junit/4.11/jar/4e031bb61df09069aeb2bffb4019e7a5034a4ee0/junit-4.11.jar
Gradle: Origin 2: /Users/yyy/.gradle/caches/artifacts-26/filestore/org.hamcrest/hamcrest-core/1.3/jar/42a25dc3219429f0e5d060061f71acb49bf010a0/hamcrest-core-1.3.jar

Gradle: Execution failed for task ':android:packageDebug'.
> Duplicate files copied in APK LICENSE.txt
File 1: /Users/yyy/.gradle/caches/artifacts-26/filestore/junit/junit/4.11/jar/4e031bb61df09069aeb2bffb4019e7a5034a4ee0/junit-4.11.jar
File 2: /Users/yyy/.gradle/caches/artifacts-26/filestore/junit/junit/4.11/jar/4e031bb61df09069aeb2bffb4019e7a5034a4ee0/junit-4.11.jar
Run Code Online (Sandbox Code Playgroud)

由于JUnit的实际上包括hamcrest库,这些天有没有办法真正排除是罐子:hamcrest核-1.3.jar或排除所有.txt文件,或从Maven仓库中排除的JUnit都在一起(它不使用).

还有其他任何有用的想法吗?

Ser*_*kyi 14

是的,您可以排除传递依赖项:

在你的情况下,这将是:

dependencies {
    compile 'com.android.support:support-v4:13.0.+'
    compile ("com.xxx:xxx-commons:1.+") {
        exclude group: 'junit', module: 'junit'
    }
}
Run Code Online (Sandbox Code Playgroud)

要么

configurations {
    all*.exclude group: 'junit', module: 'junit'
}
Run Code Online (Sandbox Code Playgroud)