Gradle依赖的统一管理

在项目开发中我们会经常引入多个Module,然而每个Module中又包含了V4、V7,为了升级新版本依赖包只用更改一次,我们决定采用Gradle依赖的统一管理,避免重复繁琐的劳动。

在Project目录下新建config.gradle文件(文件名字可以自定义)

ext {
    android = [
            compileSdkVersion: 26,
            buildToolsVersion: "26.0.2",
            applicationId    : "com.wj.baseutils",
            minSdkVersion    : 15,
            targetSdkVersion : 26,
            versionCode      : 1,
            versionName      : "1.0.0"
    ]

    def dependVersion = [
            support    : "26.1.0",
            butterknife: "8.8.1",
            glide      : "4.5.0",
    ]

    dependencies = [
            //base
            "support-v4"          : "com.android.support:support-v4:${dependVersion.support}",
            "appcompat-v7"        : "com.android.support:appcompat-v7:${dependVersion.support}",
            "annotations"         : "com.android.support:support-annotations:${dependVersion.support}",
            "constraint-layout"   : "com.android.support.constraint:constraint-layout:1.0.2",
            //test
            "junit"               : "junit:junit:4.12",
            "runner"              : "com.android.support.test:runner:1.0.1",
            "espresso-core"       : "com.android.support.test.espresso:espresso-core:3.0.1",
            //eventbus
            "eventbus"            : "org.greenrobot:eventbus:3.1.1",
            //butterknife
            "butterknife"         : "com.jakewharton:butterknife:${dependVersion.butterknife}",
            "butterknife-compiler": "com.jakewharton:butterknife-compiler:${dependVersion.butterknife}",
            //Glide
            "glide"               : "com.github.bumptech.glide:glide:${dependVersion.glide}",
            "glide-compiler"      : "com.github.bumptech.glide:compiler:${dependVersion.glide}"
    ]
}

然后在Project的build.gradle中添加

apply from: "config.gradle"

在modle或者app中添加引用

apply plugin: 'com.android.library'

android {
    compileSdkVersion rootProject.ext.android.compileSdkVersion

    defaultConfig {
        minSdkVersion rootProject.ext.android.minSdkVersion
        targetSdkVersion rootProject.ext.android.targetSdkVersion
        versionCode rootProject.ext.android.versionCode
        versionName rootProject.ext.android.versionName

        testInstrumentationRunner "android.support.test.runner.AndroidJUnitRunner"

    }

    buildTypes {
        release {
            minifyEnabled false
            proguardFiles getDefaultProguardFile('proguard-android.txt'), 'proguard-rules.pro'
        }
    }

}

dependencies {
    implementation fileTree(dir: 'libs', include: ['*.jar'])
    implementation rootProject.ext.dependencies["constraint-layout"]
    //test
    testImplementation rootProject.ext.dependencies["junit"]
    androidTestImplementation rootProject.ext.dependencies["runner"]
    androidTestImplementation rootProject.ext.dependencies["espresso-core"]
    //support
    api(rootProject.ext.dependencies["support-v4"]) {
        exclude module: 'support-annotations'
    }
    api(rootProject.ext.dependencies["appcompat-v7"]) {
        exclude module: 'support-v4'
    }
    api rootProject.ext.dependencies["annotations"]

    //eventbus
    api rootProject.ext.dependencies["eventbus"]

    //butterknife
    api(rootProject.ext.dependencies["butterknife"]) {
        exclude module: 'support-annotations'
    }
    annotationProcessor rootProject.ext.dependencies["butterknife-compiler"]

    //glide
    api(rootProject.ext.dependencies["glide"]) {
        exclude module: 'support-fragment'
    }
    annotationProcessor(rootProject.ext.dependencies["glide-compiler"]) {
        exclude module: 'jsr305'
    }
}

你可能感兴趣的:(Gradle依赖的统一管理)