version-catalog
version-catalog - 版本目录管理
简介
version-catalog 插件是 Aikero Gradle 插件套件的一部分,旨在通过动态生成 gradle/libs.versions.toml 文件来实现类型安全的依赖管理。该插件支持从远程 artifact 下载版本目录并本地化,确保团队依赖版本统一。它还集成了 Spring 生态依赖(如 spring-boot-dependencies),并生成别名(如 springBootLibs)以简化依赖引用。
项目结构
本项目采用模块化结构,version-catalog 模块专注于版本目录的生成和管理。其他模块如 plugin-common 提供共享功能,common-conf 处理通用项目配置。
核心组件
version-catalog 插件的核心是 CatalogGeneratorPlugin,它在 Gradle 的 settings 阶段应用,负责生成版本目录文件。插件通过 versionCatalogConf DSL 提供配置选项,允许用户自定义 artifact 版本、文件路径、是否启用 Spring Boot 或 Spring Cloud 依赖等。
架构概述
该插件利用 Gradle 的版本目录功能,在 settings.gradle.kts 中声明依赖版本。通过 dependencyResolutionManagement 块,插件能够集中管理所有项目的依赖版本,避免版本冲突。TYPESAFE_PROJECT_ACCESSORS 功能启用后,项目模块可通过类型安全的方式访问。
详细组件分析
CatalogGeneratorPlugin 分析
CatalogGeneratorPlugin 是一个简单的 Gradle 插件,实现了 Plugin<Settings> 接口。它在 apply 方法中应用了 dev.aga.gradle.version-catalog-generator 插件,这是实际执行版本目录生成的核心插件。
插件实现
配置 DSL 使用
versionCatalogConf {
artifactVersion = "2.0.0"
useLocalFile = false
springBoot {
enabled = true
libAlias = "spring-boot-dependencies"
catalogName = "springBootLibs"
}
}Spring 生态集成分析
插件通过嵌套配置项 springBoot、springCloud 和 springCloudAlibaba 来集成 Spring 生态系统。每个配置项允许启用/禁用相应依赖,并指定别名和 catalog 名称。
Spring 配置流程
依赖分析
version-catalog 插件依赖于 plugin-common 模块,后者提供共享的工具类和常量。此外,插件使用 dev.aga.gradle.version-catalog-generator 来实际生成版本目录文件。
