Gradle 依赖管理

在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

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值