Android 如何从所有依赖项中排除模块,但保留显式声明梯度

Android 如何从所有依赖项中排除模块,但保留显式声明梯度,android,android-studio,gradle,android-gradle-plugin,android-support-library,Android,Android Studio,Gradle,Android Gradle Plugin,Android Support Library,我正在努力解决这个问题 我在build.gradle文件中为我的android应用程序声明了一些依赖项,但问题是许多依赖项使用相同的compat库,在我的例子中是appcompat-v7 可以为每个依赖项排除此库 compile ('com.github......'){ exclude group: 'com.android.support', module: 'appcompat-v7' } 但我需要为每个依赖项执行此操作 另一种方法是使用这样的表达 configurations

我正在努力解决这个问题

我在build.gradle文件中为我的android应用程序声明了一些依赖项,但问题是许多依赖项使用相同的compat库,在我的例子中是
appcompat-v7

可以为每个依赖项排除此库

compile ('com.github......'){
    exclude group: 'com.android.support', module: 'appcompat-v7'
}
但我需要为每个依赖项执行此操作
另一种方法是使用这样的表达

configurations {
    compile.exclude module: 'appcompat-v7'
}
这是可行的,但即使显式声明此库,它也会被忽略
compile'com.android.support:appcompat-v7:+'

我所需要的只是在整个应用程序中只包含一次此库,因为如果编译而不排除,它将显示许多错误,如已定义的


也许有一个更简单的方法让它工作。如果有任何帮助,我将不胜感激。

我们在gradle中使用提供的配置(因此,当我们使用gradle:eclipse时,会包括这些包,但在编译到jar中时不包括这些包,因为这些jar预计会在运行时提供)。此配置如下所示:

configurations {
  provided {
    dependencies.all {dep ->
       configurations.default.exclude group: dep.group, module:dep.name
    }
  }
  compile.extendsFrom provided
}
这允许我们包括如下依赖项:

dependencies {
    compile("org.scala-lang:scala-library:2.11.7")
    compile("org.scala-lang:scala-compiler:2.11.7")
    provided("org.apache.spark:spark-core_2_11:2.0.0")
}

尝试创建一个包含要排除appcompat-v7的所有依赖项的配置,然后从此新配置扩展compile。

Gradle应注意确保在最高版本的类路径上仅存在依赖项的一个副本。您是否可以更新您的帖子以包含
gradle dependencyInsight--configuration compile--dependency appcompat-v7