【问题标题】:How to set a version of dependencies on Gradle?如何在 Gradle 上设置依赖版本?
【发布时间】:2019-03-30 17:30:04
【问题描述】:

我想在我的 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>

最后一段 Maven 配置确实设置了这个部分的版本:

${org.springframework.version}

如何在我的 gradle 配置中做同样的事情?

【问题讨论】:

    标签: gradle build.gradle version


    【解决方案1】:

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

    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 properties - 或从外部文件加载它们。

    ext {
        glideVersion = "4.5.0"
        ...
    }
    

    然后将其与${rootProject.ext.glideVersion} 或${project.ext.glideVersion} 一起使用。

    一般来说,改变并不容易......只是另一种组织方式。

    【讨论】:

    • @Dims 如之前的 cmets 所述,您需要双引号 "... 至少在评估表达式时。 stackoverflow.com/questions/15171049/…
    • 好的,谢谢你成功了。也请您解释一下,为什么在同一上下文中nd4j_version 和"${nd4j_version}" 指的是不同的变量?
    • @Dims 只能猜测,看不到脚本,但def 定义了一个局部变量——它可能在另一个范围内用另一个值定义。在相同的范围内,它应该总是相同的。
    • 我指的是你的代码。你写了ext { glideVersion,但在字符串中你写了${project.ext.glideVersion}而不是${ext.glideVersion}。你有额外的嵌套,没有指定。为什么?
    • 另外你为什么不写ext { def glideVersion = ?
    猜你喜欢
    • 2017-08-21
    • 1970-01-01
    • 2018-06-02
    • 1970-01-01
    • 2023-04-08
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2015-04-11
    相关资源
    最近更新 更多