如何在Gradle上设置依赖项的版本?

如何在Gradle上设置依赖项的版本?,gradle,build.gradle,version,Gradle,Build.gradle,Version,我想在我的Gradle(app/build.Gradle)配置文件的一个地方设置依赖项的版本,以便在更新时更容易更改 问题是: 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:fir

我想在我的Gradle(app/build.Gradle)配置文件的一个地方设置依赖项的版本,以便在更新时更容易更改

问题是:

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'
}
你能看到吗,我多次重复同一个版本,这使得将所有版本更改为下一个版本变得缓慢和不负责任

就像在Maven,我可以这样做:

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

5.0.8.1发布
设置版本后,我只添加如下内容:

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

org.springframework
spring上下文
${org.springframework.version}
Maven配置的最后一部分设置了这一部分的版本:

${org.springframework.version}


在我的gradle配置中,我怎么能做同样的事情呢?

假设他们都会有相同的版本是绝对错误的

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}"
}
还可以使用版本号设置
project.ext
,或者从外部文件加载它们

ext {
    glideVersion = "4.5.0"
    ...
}
然后将其与
${rootProject.ext.glideVersion}
${project.ext.glideVersion}
一起使用


总的来说,改变并不容易。。。这只是另一种组织方式。

@Dims正如前面的评论中所述,至少在计算表达式时,您需要双引号。“…好的,谢谢您。另外,请您解释一下,为什么在相同的上下文中,${nd4j\U版本和
”${nd4j\U版本}“
引用了不同的变量?@Dims只能猜测,而看不到脚本,但是
def
定义了一个局部变量-可能是在另一个范围内用另一个值定义的。在相同的范围内,它应该始终是相同的。我引用了您的代码。你写了
ext{glideVersion
,但是你写的字符串
${project.ext.glideVersion}
不是
${ext.glideVersion}
。你得到了exta嵌套,没有指定任何地方。为什么?为什么你不写
ext{def glideVersion=