Gradle依赖性排除

时间:2015-06-23 17:51:02

标签: android android-gradle build.gradle

我有一个项目A和一个项目B.项目A也是其他项目使用的核心项目。这是他的build.gradle依赖项:

dependencies {
    compile 'com.android.support:support-v4:22.0.0'
    compile 'com.google.code.gson:gson:2.3.1'
    compile('org.simpleframework:simple-xml:2.7.1') {
        //http://stackoverflow.com/a/19455878/1423773
        exclude module: 'stax'
        exclude module: 'stax-api'
        exclude module: 'xpp3'
    }

    compile 'org.apache.httpcomponents:httpcore:4.4.1'
    compile 'org.apache.httpcomponents:httpmime:4.5'
}

因为它是一个具有最新依赖版本的核心项目才有意义。项目B使用使用httpcore-4.2.4.jar的依赖项,如果我不将核心项目build.gradle修改为:

,则会产生重复的依赖项错误
dependencies {
    ...    
//    compile 'org.apache.httpcomponents:httpcore:4.4.1'
    compile 'org.apache.httpcomponents:httpcore:4.2.4'
    compile('org.apache.httpcomponents:httpmime:4.5') {
        exclude module: 'httpcore'
    }
}

这是我想避免的,因为我不想改变我的核心项目build.gradle 这种情况的最佳解决方案是什么?如果我从我的其他依赖项中删除/排除.jar会有效吗?如果是这样,我该如何删除它?我试过exclude module/group但没有运气。我想到的是diffU8test.sh.txt(我还没有读过)但是我想避免在我的核心项目中为每个非核心项目提供不同的gradle.build文件。

我的项目B冲突依赖:Chapter 56. Multi-project Builds

感谢。

1 个答案:

答案 0 :(得分:2)

我找到了它,它一直在我面前......

所以在我的项目B中,我必须遵循我在核心项目中使用的相同方法:

compile (project(':submodules:MyCoreProject')){
        exclude module: 'httpcore'
        //co.realtime:messaging-android:2.1.40
        //uses 'org.apache.httpcomponents:httpcore:4.2.4'
}

现在我的核心项目:

dependencies {
    compile 'com.android.support:support-v4:22.0.0'
    compile 'com.google.code.gson:gson:2.3.1'
    compile('org.simpleframework:simple-xml:2.7.1') {
        //http://stackoverflow.com/a/19455878/1423773
        exclude module: 'stax'
        exclude module: 'stax-api'
        exclude module: 'xpp3'
    }

    compile 'org.apache.httpcomponents:httpcore:4.4.1'
    compile 'org.apache.httpcomponents:httpmime:4.5'
}