我正在查看google示例中的新架构组件,我在其中找到了如下代码:
dependencies {
// Support libraries
implementation deps.support.app_compat
implementation deps.support.v4
implementation deps.support.design
implementation deps.support.cardview
// Architecture components
implementation deps.lifecycle.runtime
implementation deps.lifecycle.extensions
annotationProcessor deps.lifecycle.compiler
implementation deps.room.runtime
annotationProcessor deps.room.compiler
// Android Testing Support Library's runner and rules
androidTestImplementation deps.atsl.runner
androidTestImplementation deps.atsl.rules
androidTestImplementation deps.room.testing
androidTestImplementation deps.arch_core.testing
// Espresso UI Testing
androidTestImplementation deps.espresso.core
androidTestImplementation deps.espresso.contrib
androidTestImplementation deps.espresso.intents
// Resolve conflicts between main and test APK:
androidTestImplementation deps.support.annotations
androidTestImplementation deps.support.v4
androidTestImplementation deps.support.app_compat
androidTestImplementation deps.support.design
}
我无法理解为什么他们编写了以deps.*
开头的所有依赖项。任何人都可以帮我理解代码。提前致谢。
这是回购的link。
答案 0 :(得分:9)
deps
是Map
类的实例,它在project
实例上设置并在versions.gradle文件中定义。这个versions.gradle
文件在根build.gradle
脚本中依次为applied,因此deps
可以在子项目中使用。
答案 1 :(得分:1)
添加@Opal建议。
deps是在项目级别定义的占位符。您可以在here
中找到它对于Dagger2,deps在versions.gradle文件中定义如下,该文件比模块级别高出一步。
*def dagger = [:]
dagger.runtime = "com.google.dagger:dagger:$versions.dagger"
dagger.android = "com.google.dagger:dagger-android:$versions.dagger"
.....
deps.dagger = dagger*
Image if code not well formatted
这样,它有助于将相同的版本应用于项目的所有模块。 只有需要特定依赖关系的模块才能在build.gradle定义中声明它。