Android 如何从所有依赖项中排除模块,但保留显式声明梯度
我正在努力解决这个问题 我在build.gradle文件中为我的android应用程序声明了一些依赖项,但问题是许多依赖项使用相同的compat库,在我的例子中是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
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
?