How to set a version of dependencies on Gradle?

2019-07-31 09:57发布

问题:

I want to set the version of my dependencies in just one place in my Gradle (app/build.gradle) configuration file , to became easier to change in case of a update.

the problem is:

dependencies {
implementation 'com.google.android.gms:play-services-maps:12.0.0'
implementation 'com.google.android.gms:play-services-auth:12.0.0'
implementation 'com.google.firebase:firebase-core:12.0.0'
implementation 'com.google.firebase:firebase-auth:12.0.0'
implementation 'com.google.firebase:firebase-database:12.0.0'
implementation 'com.google.firebase:firebase-storage:12.0.0'
implementation 'com.google.firebase:firebase-messaging:12.0.0'
implementation 'com.google.android.gms:play-services-ads:12.0.0'
implementation 'com.github.bumptech.glide:glide:4.5.0'
}

Can you see that, i'm repiting the same version many times and this make slow and unprodutive to change all version to the next version.

Like in Maven i could just do like this:

<properties>
    <org.springframework.version>5.0.8.RELEASE</org.springframework.version>
</properties>

After set the version, I just add like this:

<dependencies>
    <!-- Spring -->
    <dependency>
        <groupId>org.springframework</groupId>
        <artifactId>spring-context</artifactId>
        <version>${org.springframework.version}</version>
    </dependency>
</dependencies>

The last piece of Maven configuration did set the version in this parte:

${org.springframework.version}

How can I do the same in my gradle configuration?

回答1:

the assumption, that they'd all would have the same version is categorically wrong ...

def glideVersion = "4.5.0"

dependencies {

    implementation "com.google.android.gms:play-services-base:16.0.1"
    implementation "com.google.android.gms:play-services-auth:16.0.1"

    implementation "com.google.android.gms:play-services-maps:16.0.0"
    implementation "com.google.android.gms:play-services-ads:16.0.0"

    implementation "com.google.firebase:firebase-core:16.0.4"
    implementation "com.google.firebase:firebase-auth:16.0.4"

    implementation "com.google.firebase:firebase-database:16.0.3"
    implementation "com.google.firebase:firebase-storage:16.0.3"

    implementation "com.google.firebase:firebase-messaging:17.3.4"

    implementation "com.github.bumptech.glide:glide:${glideVersion}"
}

one can also set project.ext properties with version numbers - or load them from external files.

ext {
    glideVersion = "4.5.0"
    ...
}

and then use it with ${rootProject.ext.glideVersion} or ${project.ext.glideVersion}.

in general, it's not easier to change... just another way of organizing it.