我有buildSrc/src/main/kotlin/Dependencies.kt个包含依赖项的文件,例如

object Deps {
    const val lifecycleVersion = "2.6.2"

    const val lifecycle = listOf(
        "androidx.lifecycle:lifecycle-runtime-ktx:$lifecycleVersion",
        "androidx.lifecycle:lifecycle-runtime-compose:$lifecycleVersion"
    )
}

在模块build.gradle.kts中,

dependencies {
    ...
    Deps.lifecycle.forEach(::implementation)
    ...
}

如果我直接在模块Build.gradle.kts中指定依赖项,例如,

val lifecycleVersion = "2.6.2"
implementation("androidx.lifecycle:lifecycle-runtime-ktx:$lifecycleVersion")

enter image description here

Android Studio将在有更新版本可用时发出警告.但是,如果我使用buildSrc插件的依赖项,情况就不会如此了.如何将"依赖判断"(有效地)添加到buildSrc/src/main/kotlin/Dependencies.kt或至少在模块gradle文件中指示有更新的版本可用?

是否有插件可以正确解析Dependencies.kt和FLAG中列出的值?

推荐答案

您可以使用版本目录将所有依赖项及其版本保存在一个中心位置,如果某些依赖项有较新的版本,则会发出alert .

版本目录属于settings.gradle文件,如果您使用默认名称(阅读here),它会自动添加到您的项目中,这样所有其他Gradle模块就可以访问相同的文件,而不需要进一步的工作.但是,如果您想要从BuildSrc(它有自己的settings.gradle文件)访问它,请将此文件添加到buildSrc/settings.gradle文件

dependencyResolutionManagement {
    versionCatalogs {
        create("libs") {
            from(files("../gradle/libs.versions.toml"))
        }
    }
}

注意:您可以使用Build-Logic而不是BuildSrc来创建可以共享您的模块的构建逻辑的约定插件.构建逻辑的另一个好处是,如果您更改了它,Gradle将不会使您的项目缓存无效(这发生在BuildSrc中).

Android相关问答推荐

如何将文本相对于喷气背包中的图标垂直居中?

房间DB:UPSERT返回什么?

滚动屏幕时更改按钮外观

Google Play测试应用程序Crash-java.lang.NoSuchFieldError:没有Lkotlinx/coroutines/CoroutineExceptionHandler类型的字段键

Jetpack创作动画断断续续变化的观点

属性可选的涟漪效果ItemBackEarth Borderless不适用于Android 13和更高版本

在Jetpack Compose中从LazyColumn中删除项目时发生IndexOutOf边界异常

Android Kotlin - 计费 - 从应用内购买获取productId

AndroidX Media3 迁移指南

如何在同一行中滚动自定义布局和惰性列,就好像它们是一个组件一样

将输出写入已发布的 Android 应用程序中的日志(log)文件?

如何在Android Studio中禁用文件中的Github用户名引用?

同样的参数值下,为什么requiredSizeIn不等于requiredWidthIn + requiredHeightIn?

当我想使用例如 material3 时,为什么我需要添加对 material 的依赖?底部导航?

如何在 Jetpack Compose 中创建无限pager

当包含可绘制对象的整数变量传递给 painterResource 函数时,为什么图像不在 Android Studio 中呈现?

验证硬编码密码

无法通过 retrofit 解析对 kotlin 数据类的 xml 响应

如何从我的 android 应用程序中删除 QUERY_ALL_PACKAGES 权限?

Android - 水平(从右到左)圆形背景 colored颜色 过渡