在哪里存储Gradle依赖版本

kmynzznz  于 12个月前  发布在  其他
关注(0)|答案(2)|浏览(144)

我在网上查过,发现有两种不同的方法可以存储android应用程序的gradle版本。一个是gradle.properties,另一个是ext对象下的根build.gradle文件。这两者都可以从所有其他模块访问。我只是想弄清楚每一个之间的区别,哪一个是推荐使用,为什么?
build.gradle

ext {
    versionName = "1.10.10"
    androidGradleTools = "3.4.1"
    compileSdkVersion = 29
    minSdkVersion = 23
    targetSdkVersion = 29
    versionCode = 2
    appCompat = "1.1.0-rc01"
    archCore = "2.0.1"
    material = "1.1.0-alpha09"
    kotlinVersion = "1.3.31"
    kotlinExtensions = "1.1.0-rc01"
    constraintLayout = "1.1.3"
    awsAuth = "2.7.4"
    coordinatorLayout = "1.1.0-beta01"
    eventBus = "3.1.1"
    jUnit = "4.13-beta-3"
    testRunner = "1.2.0"
    espressoCore = "3.2.0"
    annotation = "1.1.0"
    lifecycleViewModel = "2.2.0-alpha02"
    lifecycleExtensions = "2.2.0-alpha02"
    roomVersion = "2.1.0"
    retrofit = "2.6.0"
    okHttp3 = "4.0.0"
    firebaseCommon = "11.4.2"
    crashlytics = "2.10.1"
    slf4Android = "0.1.5"
    butterknife = "10.1.0"
    rabbitMQ = "4.11.1"
    picasso = "2.5.2"
    gson = "2.8.5"
    javaPusher = "1.8.2"
    androidVolley = "1.0.19"
    multidex = "2.0.0"
    googlePlayCore = "1.6.1"
    volley = "1.0.19"
    navController = "2.2.0-alpha01"
    kotlinCoroutines = "1.1.1"
    ktor_version = "1.2.3"
    asyncHttp = "1.4.9"
}

gradle.properties

# Dependent library versions
android_google_gson_version=2.7
android_google_play_core_version=1.4.1
eventbus_version=3.0.0
squareup_retrofit2_version=2.1.0
squareup_ok_http_version=3.3.1
network_ok_http_logging_interceptor=3.3.1
aws_sdk_auth_core_version=2.7.4
fb_stetho_version=1.5.0
fb_sdk_version=4.37.0
picasso_lib_version=2.5.2
crashlytics_lib_version=2.9.4@aar
volley_lib_version=1.0.19
butterknife_lib_version=8.8.1
commons_io_lib_version=2.4
simbio_encryption_lib_version=1.2.0
anko_common_lib_version=0.8.3
slf_4_android_logger_version=0.1.5
bksxznpy

bksxznpy1#

我建议您将版本号存储在ext {}块中。它只是代表你定义的“额外属性”。
为什么不应该使用gradle.properties?如果我们看一下文档,我们可以看到gradle.properties应该是一个由项目所需的更多“抽象”属性组成的文件。比如Java home或启用/禁用Gradles缓存。在Android中,我们还有local.properties文件,例如,它声明了Android SDK的路径。
因此,这些类型的属性在与声明依赖项不同的级别上处理项目。
因此,我建议你使用ext块来声明依赖版本。这也是Android文档所推荐的。

lmvvr0a8

lmvvr0a82#

所以在Gradle 8中有better way。只需在根项目的gradle文件夹中创建libs.versions.toml文件。示例文件

[versions]
spring-boot = "3.1.3"
[plugins]
spring-boot = {id="org.springframework.boot", version.ref="spring-boot"}
[libraries]
spring-boot-jpa = { module = "org.springframework.boot:spring-boot-starter-data-jpa", version.ref = "spring-boot" }

然后在你的build.gradle应用插件你写

plugins {
    alias(libs.plugins.spring.boot)
}

并在依赖块中添加模块

dependencies {
    implementation(libs.spring.boot.jpa)
}

您也可以从toml文件中获取版本,如。

libs.versions.spring.boot.get()

它将给你给予一个表示版本号的字符串。为了在所有项目或子项目范围内使用它,你必须像这样引用rootProject(KotlinDSL):

allprojects {
    ...
    dependencies {
        implementation(rootProject.libs.spring.boot.jpa)
    }
    ...
}

相关问题