问题背景
在Android项目升级Gradle插件至8.7.2版本后,我尝试将com.hujiang.aspectjx插件迁移至Version Catalogs进行统一管理时,可是,大事不妙啦!!!! 遭遇了以下编译错误:
Plugin [id: 'com.hujiang.aspectjx', version: '2.0.10', apply: false] was not found
是我使用的姿势不对吗? 还是说我的长相不行。
技术验证过程
1. 传统配置有效性验证
在未使用Version Catalogs时,以下配置可正常编译, 屁问题都没有:
groovy
复制
// 项目级build.gradle
buildscript {
dependencies {
classpath 'com.hujiang.aspectjx:gradle-android-plugin-aspectjx:2.0.10'
}
}
// 模块级build.gradle
apply plugin: 'android-aspectjx'
2. Version Catalogs迁移配置
# libs.versions.toml
[plugins]
aspectjx = { id = "com.hujiang.aspectjx", version = "2.0.10" }
# 项目级build.gradle
plugins {
alias(libs.plugins.aspectjx) apply false
}
3. 情况不妙,编译失败,关键错误日志分析
log
复制
Failed to resolve: com.hujiang.aspectjx:com.hujiang.aspectjx.gradle.plugin:2.0.10
该坐标与插件的真实发布坐标存在显著差异:
diff
复制
- com.hujiang.aspectjx:com.hujiang.aspectjx.gradle.plugin:2.0.10
+ com.hujiang.aspectjx:gradle-android-plugin-aspectjx:2.0.10
核心问题解析
1. Gradle插件ID映射机制
Gradle默认采用三段式坐标推导规则:
插件ID → groupId:artifactId.gradle.plugin:version
本例中推导结果为:
com.hujiang.aspectjx → com.hujiang.aspectjx:com.hujiang.aspectjx.gradle.plugin:2.0.10
问大佬们两个问题
Q1: Version Catalogs的坐标映射机制
在libs.version.toml中配置的插件id是如何映射成groupId, artfactId的,给我的感觉插件的配置方式应该和三方库的配置方式一样, 应该也要配置groupId和argfactId的?
Q2: 插件的正确配置方式
正确的配置方式应该是怎么样的, 是libs.version.toml中配置的插件id配置不对吗?怎么才能编译通过啊