我尝试为我的多模块项目编写中央依赖项文件。
ext {
supportVersion = '25.4.0'
junitVersion = '4.12'
supportDependencies = [
design: "com.android.support:design:${supportVersion}",
fragment: "com.android.support:support-fragment:${supportVersion}",
recyclerView: "com.android.support:recyclerview-v7:${supportVersion}"
]
...
}
在模块中使用它们
compile supportDependencies.design
compile supportDependencies.fragment
compile supportDependencies.recyclerView
但是有些依赖项要编译exclude
androidTestCompile('com.android.support.test.espresso:espresso-core:2.2.2', {
exclude group: 'com.android.support', module: 'support-annotations'
})
当我尝试写属性时
testingDependencies = [
espresso: ('com.android.support.test.espresso:espresso-core:2.2.2', {
exclude group: 'com.android.support', module: 'support-annotations'
})
]
我收到编译时语法错误
是否可以创建带有exclude的扩展的库属性,以便在模块中编译?
答案 0 :(得分:0)
当然,您会收到语法错误。您必须使用Groovy语法。在第一个示例中,您可以简单地将Map
String
键定义为String
值,然后使用这些字符串。
你可以。 G。而不是Map<String, String>
定义Map<String, List>
并在列表中首先放置依赖关系,在第二位放置为List<Map>
,然后迭代该列表,添加排除。 (group: 'com.android.support', module: 'support-annotations'
只是地图的语法糖,基本上你用方法exclude
作为参数调用{/ 1}}
或者您可以完全更改为使用中央定义闭包来应用相应的依赖项,例如
Map
或类似的东西。
答案 1 :(得分:0)
通过添加中央依赖关系文件
解决了我的问题ext {
espressoVersion = '3.0.1'
testingDependencies = [
espresso: "com.android.support.test.espresso:espresso-core:${espressoVersion}"
]
}
并在模块中
androidTestCompile(testingDependencies.espresso, {
exclude group: 'com.android.support', module: 'support-annotations'
})
所以我还有一个带有使用过的依赖版本的文件,并且可以在所有模块中简单地更新版本