Gradle 依赖管理

版权声明:本文为博主原创文章,遵循 CC 4.0 BY-SA 版权协议,转载请附上原文出处链接和本声明。
本文链接:https://blog.csdn.net/tyzlmjj/article/details/70138850

在Gradle中添加第三方库的依赖一直很方便,添加一条字符串就可以实现第三方库的自动下载,修改版本数字就能控制第三方库的版本。

但是好用也不能乱用,毕竟都是字符串的复制粘贴,缺乏好的管理会对一个项目的长期维护造成不必要的麻烦。比如Android的官方支持库隔一段时间就会升级,如果有很多module那么光改个版本号就很麻烦了。

我最讨厌麻烦,所以写项目的过程中摸索出了以下两种我觉得比较好的方式去管理依赖(只针对安卓工程)


控制支持库的版本

在工程根目录下的gradle.properties文件里可以创建一个全局的常量

SUPPORT_LIBRARY_VERSION=25.3.1

添加Android支持库依赖时版本号用这个常量替代(注意用双引号)

dependencies {
    compile "com.android.support:appcompat-v7:${SUPPORT_LIBRARY_VERSION}"
    compile "com.android.support:cardview-v7:${SUPPORT_LIBRARY_VERSION}"
    compile "com.android.support:recyclerview-v7:${SUPPORT_LIBRARY_VERSION}"
    compile "com.android.support:design:${SUPPORT_LIBRARY_VERSION}"
}

这样就可以简单的管理Android支持库的版本,升级支持库版本的时候只需要改一个地方就可以了。当然,这只做到了对版本号的统一管理,如果要对依赖进行彻底的集中化配置,可以参考下面的做法。


集中管理所有依赖

在Project的build.gradle文件中引用一个外部文件

apply from: 'dependencies.gradle'

在Project的build.gradle同级目录下创建一个新的文件dependencies.gradle,然后可以在这里创建一些外部变量

ext {
    supportLibraryVersion = '25.3.1'

    compileDependencies = [
            appcompat_v7:       "com.android.support:appcompat-v7:${supportLibraryVersion}",
            cardview_v7:        "com.android.support:cardview-v7:${supportLibraryVersion}",
            recyclerview_v7:    "com.android.support:recyclerview-v7:${supportLibraryVersion}",
            design:             "com.android.support:design:${supportLibraryVersion}",
            support_v4:         "com.android.support:support-v4:${supportLibraryVersion}",
            support_annotations:"com.android.support:support-annotations:${supportLibraryVersion}",

            okHttp:             'com.squareup.okhttp3:okhttp:3.3.1',
            gson:               'com.google.code.gson:gson:2.8.0',
            rxJava:             'io.reactivex.rxjava2:rxjava:2.0.8',
            rxAndroid:          'io.reactivex.rxjava2:rxandroid:2.0.1'
    ]

    testDependencies = [
            junit:              'junit:junit:4.12',
            mockito:            'org.mockito:mockito-core:1.9.5',
            assertj:            'org.assertj:assertj-core:1.7.1',
            espresso:           'com.android.support.test.espresso:espresso-core:2.2.2',
            robolectric:        'org.robolectric:robolectric:3.1.1'
    ]
}

然后在添加依赖时就是使用这些变量了

dependencies {

    def compileDependencies = rootProject.ext.compileDependencies
    def testDependencies = rootProject.ext.testDependencies

    compile compileDependencies.appcompat_v7
    compile compileDependencies.rxJava

    testCompile testDependencies.junit
    testCompile testDependencies.mockito

    ....
}

最后,以防一些新手误会,要说明下,创建一个dependencies.gradle文件并不是必须的,你也可以直接写在Project的build.gradle里面。我只是想分的清楚一点��


参考资料

Gradle依赖管理基础 https://docs.gradle.org/current/userguide/artifact_dependencies_tutorial.html

Gradle依赖管理 https://docs.gradle.org/current/userguide/dependency_management.html

展开阅读全文

没有更多推荐了,返回首页