第二章 版本号声明与依赖坐标变更:识别新版Compiler的Maven坐标变更

2.1 现象识别

升级 Compose Compiler 时,最直接的编译失败信号来自 Gradle 依赖解析阶段。常见现象包括:

  • 构建报错:类似 Could not resolve org.jetbrains.compose.compiler:compiler:1.5.0 或 Unable to find artifact。
  • 版本不存在:Log 中提示 not found 或 404,即使你确信版本号正确。
  • 仓库源不可达:报错信息中包含 repository、mavenCentral、google() 等关键词,并伴有超时或连接拒绝。
  • Gradle 同步失败:IDE 弹出红色提示,build.gradle 文件中相关坐标行被标红。
速判口诀:坐标还是仓库?看 artifact 路径是否完整;版本号是否在官方发布页出现过;仓库地址是否拼写错误或协议过期。

2.2 数据采集

使用以下表格系统收集现场信息,帮助后续定位:

采集项检查位置示例输出
Compose 版本及 Compiler 坐标build.gradle 或 libs.versions.toml
org.jetbrains.compose:compose-compiler:1.5.0
仓库声明列表项目级 settings.gradle 或根项目 build.gradle
repositories {
    mavenCentral()
    google()
}
Gradle 缓存状态执行 gradle --refresh-dependencies 后的日志对比缓存中的旧坐标与新版坐标 hash
网络连通性直接测试仓库 URL 是否可访问浏览器打开 https://repo1.maven.org/maven2/org/jetbrains/compose/compiler/ 检查目录结构

2.3 原因定位——基于故障树的根因分析

故障树将依赖解析失败细化为两类根本原因:坐标错误 与 仓库问题。下图展示完整排查路径:

依赖解析失败故障树(坐标 & 仓库维度) 依赖解析失败 坐标错误 group 变更 artifact 变更 version 不存在 仓库问题 仓库未配置 URL 错误 凭证过期 检查向导 ① 优先确认新版 Compiler 官方文档声明的完整坐标(group:artifact:version) ② 检查 settings.gradle repositories 是否包含 mavenCentral() 或 jetbrains 专用仓库 通过该故障树,可快速缩小排查范围,避免盲目修改仓库配置。

2.4 修复动作

根据故障树定位到的具体原因,执行对应修复操作:

  • 坐标错误:
    • group/artifact 变更:查阅 Compose Compiler 官方 版本说明,将坐标更新为最新格式。例如旧版 org.jetbrains.compose:compose-compiler:1.4.0 在 1.5.0 后改为 org.jetbrains.compose.compiler:compiler:1.5.0(注意 group 和 artifact 都拆分了)。
    • version 不存在:确认版本号是否在 Maven Central 上真正发布,或改用 BOM 版本对齐:
    // BOM 方式(推荐)
    dependencies {
        implementation platform("org.jetbrains.compose:compose-bom:2024.01.00")
        implementation "org.jetbrains.compose.compiler:compiler"
    }
  • 仓库问题:
    • 仓库未配置:在 settings.gradle 中增加 mavenCentral();若使用 Kotlin DSL,写法同上。
    • URL 错误:检查仓库地址是否包含拼写错误(如 mavenCentral 误写为 mavencentral),或是否因国内网络需要配置镜像。
    • 凭证过期:私有仓库需更新 gradle.properties 中的用户名密码或 。

2.5 复测及预防

修复后执行以下三步验证:

  1. 清理并刷新:运行 ./gradlew clean --refresh-dependencies,避免缓存干扰。
  2. 编译检查:运行 ./gradlew assembleDebug,确保无依赖解析错误。
  3. 版本锁定:使用 Gradle 的 dependencyLocking 插件或 libs.versions.toml 集中管理 Compose Compiler 坐标,防止后续因疏忽引入错误:
// gradle/libs.versions.toml
[versions]
compose-compiler = "1.5.0"

[libraries]
compose-compiler = { group = "org.jetbrains.compose.compiler", name = "compiler", version.ref = "compose-compiler" }

[plugins]
compose-compiler = { id = "org.jetbrains.compose", version.ref = "compose-compiler" }
避坑提醒:部分早期版本的 Compose Compiler 曾从 JetBrains 专属仓库迁移至 Maven Central,旧项目若未更新仓库声明会直接导致解析失败。建议始终在 settings.gradle 中同时保留 mavenCentral() 与 google()(Android 依赖所需),并养成每次升级前对照官方发行说明核对坐标的习惯。

2.6 预防性排查表

检查项判断规则合格标准
坐标 group/artifact与官方发行说明完全一致,大小写敏感无红色波浪线,Gradle 同步成功
版本号在 Maven Central / Google Maven 上存在对应目录浏览器打开 artifact 路径返回 200
仓库声明settings.gradle 包含至少一个公开仓库项目能正常解析所有外部依赖
Gradle 缓存定期执行 --refresh-dependencies 后无残留旧坐标构建日志无 Warning 关于 deprecated artifact

遵循上述流程,可将版本号声明与依赖坐标相关问题在 10 分钟内定位并修复,有效减少升级阻塞时间。