【绝非标题党】Android大佬们,我遇到了相当奇葩的问题,没搞定

322 阅读1分钟

东方女性,18岁, 超级漂亮, 程序员,坐在电脑旁.jpeg

问题背景

在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配置不对吗?怎么才能编译通过啊