Exclude .jar from compile in Android Studio with Gradle

14,029

Yes, you can exclude transitive dependencies:

In your case this would be:

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

or

configurations {
    all*.exclude group: 'junit', module: 'junit'
}
Share:
14,029
Joakim Engstrom
Author by

Joakim Engstrom

Gadget geek, Android and iOS developer, mobile enthusiast and an unhealthy love for film!

Updated on July 21, 2022

Comments

  • Joakim Engstrom
    Joakim Engstrom almost 2 years

    I currently have something like this in the build.gradle file.

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

    A problem arises since both jUnit and hamcrest-core are present in the com.xxx:xxx maven repository, creating an error like this:

    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
    

    Since jUnit actually includes the hamcrest library these days is there a way to actually exclude the jar that is: hamcrest-core-1.3.jar Or exclude all .txt files, or exclude jUnit all together from the maven repository (it's not used).

    Any other ideas that could be helpful?