第二章 版本号声明与依赖坐标变更:识别新版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 | |
| 仓库声明列表 | 项目级 settings.gradle 或根项目 build.gradle | |
| Gradle 缓存状态 | 执行 gradle --refresh-dependencies 后的日志 | 对比缓存中的旧坐标与新版坐标 hash |
| 网络连通性 | 直接测试仓库 URL 是否可访问 | 浏览器打开 https://repo1.maven.org/maven2/org/jetbrains/compose/compiler/ 检查目录结构 |
2.3 原因定位——基于故障树的根因分析
故障树将依赖解析失败细化为两类根本原因:坐标错误 与 仓库问题。下图展示完整排查路径:
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" } - group/artifact 变更:查阅 Compose Compiler 官方 版本说明,将坐标更新为最新格式。例如旧版
- 仓库问题:
- 仓库未配置:在
settings.gradle中增加mavenCentral();若使用 Kotlin DSL,写法同上。 - URL 错误:检查仓库地址是否包含拼写错误(如
mavenCentral误写为mavencentral),或是否因国内网络需要配置镜像。 - 凭证过期:私有仓库需更新
gradle.properties中的用户名密码或 。
- 仓库未配置:在
2.5 复测及预防
修复后执行以下三步验证:
- 清理并刷新:运行
./gradlew clean --refresh-dependencies,避免缓存干扰。 - 编译检查:运行
./gradlew assembleDebug,确保无依赖解析错误。 - 版本锁定:使用 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 分钟内定位并修复,有效减少升级阻塞时间。