📐 3 · Gradle 多模块配置

Version Catalog

🧩 settings.gradle.kts · 模块依赖 · 版本目录

🎒 中小学生色系 · 双边框
settings.gradle.kts
模块间依赖
Version Catalog

📁 settings.gradle.kts · 模块注册

多模块架构下,根目录 settings.gradle.kts 统一声明所有子模块:

// 根目录 settings.gradle.kts
pluginManagement {
    repositories {
        google()
        mavenCentral()
        gradlePluginPortal()
    }
}

dependencyResolutionManagement {
    repositoriesMode.set(RepositoriesMode.FAIL_ON_PROJECT_REPOS)
    repositories {
        google()
        mavenCentral()
    }
}

rootProject.name = "MultiModuleCompose"

// 模块注册 —— 中小学生也能看懂的命名 😊
include(":app")
include(":core:ui")
include(":core:network")
include(":feature:home")
include(":feature:profile")
include(":feature:settings")
include(":library:common")

🔗 模块间依赖声明

每个模块的 build.gradle.kts 通过 project() 引用其他模块:

模块依赖声明 (dependencies)说明
:app
implementation(project(":feature:home"))
主应用依赖特性模块
:feature:home
implementation(project(":core:ui"))
首页依赖UI公共库
:feature:profile
implementation(project(":core:network"))
个人页依赖网络层
:core:ui
implementation(project(":library:common"))
UI组件依赖通用工具
:library:common
无模块依赖
纯工具/扩展

✅ 推荐使用 implementation 避免依赖泄漏

📦 版本目录 (Version Catalog)

在 gradle/libs.versions.toml 中集中管理依赖版本,告别硬编码:

# gradle/libs.versions.toml
[versions]
compose-bom = "2024.12.01"
kotlin = "2.0.21"
agp = "8.5.2"
retrofit = "2.9.0"
compose-compiler = "1.5.15"

[libraries]
compose-bom = { group = "androidx.compose", name = "compose-bom", version.ref = "compose-bom" }
compose-ui = { group = "androidx.compose.ui", name = "ui" }
compose-material3 = { group = "androidx.compose.material3", name = "material3" }
retrofit-core = { group = "com.squareup.retrofit2", name = "retrofit", version.ref = "retrofit" }
kotlin-stdlib = { group = "org.jetbrains.kotlin", name = "kotlin-stdlib", version.ref = "kotlin" }

[plugins]
android-application = { id = "com.android.application", version.ref = "agp" }
kotlin-android = { id = "org.jetbrains.kotlin.android", version.ref = "kotlin" }
compose-compiler = { id = "org.jetbrains.kotlin.plugin.compose", version.ref = "kotlin" }

在模块中引用版本目录:

// app/build.gradle.kts
plugins {
    alias(libs.plugins.android.application)
    alias(libs.plugins.kotlin.android)
    alias(libs.plugins.compose.compiler)
}

dependencies {
    implementation(platform(libs.compose.bom))
    implementation(libs.compose.ui)
    implementation(libs.compose.material3)
    implementation(libs.retrofit.core)
    implementation(project(":feature:home"))
}

🧭 模块依赖架构 SVG

:app :feature:home :feature:profile :feature:settings :core:ui :core:network :library:common 应用/特性模块 核心/公共库 可选依赖

✨ 中小学生色系小贴士

  • 🎯 使用 Version Catalog 后,所有模块版本统一,升级只需改 libs.versions.toml
  • 🧩 模块间依赖采用 implementation(project(":module")),保持编译隔离
  • 📚 建议按功能分层::feature:*、:core:*、:library:*