You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何为buildSrc与应用模块统一配置Kotlin版本?

多模块Kotlin项目用buildSrc统一管理依赖版本并对齐Kotlin版本

最近折腾多模块Kotlin项目时,刚好碰到了用buildSrc(基于Kotlin DSL)统一管控依赖定义与版本,同时要让buildSrc模块和业务应用模块使用相同Kotlin版本的需求,整理了一套实操方案分享给你:

第一步:基础的buildSrc配置

buildSrc模块的核心是用Kotlin DSL编写配置,它有两种插件声明方式:

  • 简洁版(Gradle会自动适配兼容的插件版本):
plugins {
    `kotlin-dsl`
}
  • 指定具体版本的完整声明方式:
plugins {
    id("org.gradle.kotlin.kotlin-dsl") version "0.16.2"
}

第二步:对齐buildSrc与业务模块的Kotlin版本

默认情况下,kotlin-dsl插件会绑定一个固定的Kotlin版本,很可能和你业务模块用的版本不一致,所以我们要手动统一:

1. 在buildSrc里定义统一版本常量

在buildSrc/src/main/kotlin下创建一个Versions.kt文件,把所有统一版本都集中在这里:

object Versions {
    // 这里填你项目要使用的Kotlin版本
    const val kotlin = "1.9.20"
    // 还可以扩展其他依赖版本,比如协程、Compose等
    // const val coroutines = "1.7.3"
}

2. 配置buildSrc的编译环境

回到buildSrc的build.gradle.kts,强制它使用我们指定的Kotlin版本:

plugins {
    `kotlin-dsl`
}

// 可选:和业务模块的JVM目标保持一致
kotlinDslPluginOptions {
    jvmTarget.set("17")
}

dependencies {
    // 对齐Kotlin标准库和Gradle插件版本,覆盖插件默认绑定的版本
    implementation(kotlin("stdlib-jdk8", version = Versions.kotlin))
    implementation(kotlin("gradle-plugin", version = Versions.kotlin))
}

// 配置buildSrc的Kotlin编译参数,和业务模块保持一致
tasks.withType<org.jetbrains.kotlin.gradle.tasks.KotlinCompile> {
    kotlinOptions {
        jvmTarget = "17"
        apiVersion = "1.9"
        languageVersion = "1.9"
    }
}

3. 业务模块引用统一版本

在你的应用模块(比如app模块)的build.gradle.kts里,直接用buildSrc里定义好的版本:

plugins {
    id("com.android.application")
    kotlin("android")
}

android {
    // ... 你的Android基础配置
    compileOptions {
        sourceCompatibility = JavaVersion.VERSION_17
        targetCompatibility = JavaVersion.VERSION_17
    }
    kotlinOptions {
        jvmTarget = "17"
        apiVersion = "1.9"
        languageVersion = "1.9"
    }
}

dependencies {
    // 直接引用统一的Kotlin版本
    implementation(kotlin("stdlib-jdk8", version = Versions.kotlin))
    // 其他依赖也可以统一在buildSrc的Dependencies对象里定义,比如:
    // implementation(Dependencies.coroutinesCore)
}

小提示

  • 把版本和依赖都放在buildSrc里管理,后续升级版本只需要修改Versions.kt这一处,整个项目的所有模块都会自动同步,再也不用逐个模块改版本号了。
  • 如果遇到版本冲突问题,可以用Gradle的dependencyInsight任务排查,比如执行./gradlew app:dependencyInsight --dependency org.jetbrains.kotlin:kotlin-stdlib来查看Kotlin标准库的依赖树。

内容的提问来源于stack exchange,提问作者JJD

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.05.21 04:34:13