Gradle 插件 简介
Aikero Gradle插件概述
项目简介
Aikero Gradle Plugin Suite是一套专为企业内部开发设计的Gradle插件集合,旨在通过标准化构建流程、简化项目配置和提升开发团队整体效率来优化软件开发体验。该项目采用模块化插件架构,为Java/Kotlin项目提供统一的构建、依赖管理和发布策略。
项目定位
- 构建标准化工具:专为企业内部场景优化,提供统一的项目配置和构建规范
- 模块化插件集合:包含5个核心插件,每个插件专注于特定功能领域
- 开发效率提升器:通过自动化和标准化减少重复配置工作
- 团队协作促进者:确保团队成员使用一致的构建配置和最佳实践
设计理念与核心理念
Aikero Gradle插件集合的设计围绕四个核心理念构建:
标准化(Standardization)
通过统一的配置模板和构建规范,确保团队内所有项目使用一致的设置。每个插件都提供预配置的默认设置,开发者只需少量自定义即可满足需求。
自动化(Automation)
减少手动配置工作,自动处理常见的构建任务。从依赖版本管理到发布流程,大部分操作都可以通过插件自动完成。
可扩展性(Extensibility)
采用模块化设计,允许开发者根据项目需求选择合适的插件组合。每个插件都是独立的,可以单独使用或与其他插件协同工作。
技术栈要求
Aikero Gradle插件集合对技术栈有明确的要求,确保项目的稳定性和兼容性:
核心技术要求
| 技术组件 | 版本要求 | 说明 |
|---|---|---|
| Gradle | 9.0+ | 提供最新的构建功能和性能优化 |
| JDK | 21+ | Temurin-JDK 利用最新语言特性和性能改进 |
| Kotlin | 2.2+ | 支持现代Kotlin特性 |
| 操作系统 | 跨平台 | 支持Windows、macOS、Linux |
环境配置要求
项目要求配置内部Nexus仓库访问权限,确保依赖下载和发布的安全性。环境配置通过gradle.properties文件集中管理,包含以下关键配置项:
- Nexus仓库配置:公司内部Maven仓库URL和认证信息
- 项目基本信息:组名、版本号、JDK版本等
- 构建优化选项:配置缓存、并行构建等性能优化设置
插件架构概览
Aikero Gradle插件集合采用分层模块化架构,每个插件都有明确的职责边界和功能定位:
架构特点
- 分层依赖关系:所有插件都依赖于
plugin-common,确保共享功能的一致性 - 独立功能模块:每个插件提供特定功能,可以独立使用
- 统一入口点:通过
settings.gradle.kts统一管理插件仓库和版本 - 类型安全访问:启用Gradle的类型安全项目访问器功能
核心插件详解
1. plugin-common - 核心基础库
plugin-common是整个插件集合的基础,提供公共常量、共享工具类和插件通用接口。它是其他所有插件的依赖基础。
核心功能
- 模板同步机制:在编译阶段固化插件版本、构建时间等信息
- Kotlin源码生成:动态生成Kotlin源代码文件
- 构建时属性访问:确保在配置阶段就确定关键属性值
技术实现
插件通过模板引擎在编译时生成源代码,将构建时信息注入到生成的Kotlin类中,为其他插件提供统一的基础服务。
2. version-catalog - 版本目录管理
version-catalog插件负责集中管理项目依赖版本,避免版本冲突并统一团队依赖版本。
核心特性
- 集中版本管理:通过
libs.versions.toml文件统一管理所有依赖版本 - Spring生态支持:内置Spring Boot、Spring Cloud等生态系统的版本管理
- 多源配置支持:支持从不同源下载版本目录文件
- 自定义配置能力:允许用户自定义catalog名称和配置选项
使用场景
- 大型项目中的依赖版本统一管理
- 微服务架构中的Spring生态依赖协调
- 需要避免版本冲突的企业项目
3. common-conf - 通用项目配置
common-conf插件提供标准化的Java/Kotlin项目配置,包括编译参数、编码设置和源码JAR生成。
默认配置
- 文件编码:所有编译任务统一使用UTF-8编码
- Java兼容性:标准化Java源代码和目标兼容性版本
- Kotlin配置:设置Kotlin JVM目标版本
- 源码JAR:自动生成包含源代码的JAR包
可选配置
开发者可以通过配置自定义以下选项:
- 是否生成源码JAR包
- Java版本设置
4. publish-conf - 发布配置管理
publish-conf插件简化Maven仓库发布流程,自动配置发布相关的所有设置。
自动化功能
- Maven发布插件:自动添加
maven-publish插件 - 仓库配置:根据版本号自动选择快照或正式仓库
- 默认发布配置:提供标准的Java发布配置
- Nexus集成:自动配置Nexus仓库连接
特殊配置
支持禁用特定模块的发布配置,适用于不需要发布的模块(如fatjar项目)。
5. api-version-generator - 版本信息生成器
api-version-generator插件自动生成API版本信息类,记录构建时的各种信息。
生成内容
- 项目名称:从项目配置中提取的应用名称
- 构建时间:精确到毫秒的构建时间戳
- 版本号:当前项目的版本信息
- 注解标记:添加
@VersionMarked注解便于识别
使用价值
- API版本追踪:为API提供版本标识
- 构建信息记录:记录每次构建的详细信息
- 运行时查询:可在运行时获取版本信息
模块化设计优势
Aikero Gradle插件集合的模块化设计带来多重优势:
1. 灵活的插件组合
开发者可以根据项目需求选择合适的插件组合:
2. 减少重复配置
每个插件都封装了最佳实践,避免团队成员重复配置相同的设置。例如:
common-conf统一了所有项目的编译参数version-catalog避免了版本冲突问题publish-conf标准化了发布流程
3. 提升团队效率
- 一致性保证:所有项目使用相同的配置标准
- 学习成本降低:新成员可以快速上手
- 维护成本减少:配置变更只需在插件层面处理
4. 增强构建一致性
通过标准化的构建流程,确保:
- 不同环境下的构建结果一致
- 版本信息的准确性和可追溯性
- 依赖管理的可靠性和安全性
最佳实践与使用场景
推荐的插件组合
1. 业务微服务项目
plugins {
id("team.aikero.gradle.plugin.common-conf")
id("team.aikero.gradle.plugin.publish-conf")
id("team.aikero.gradle.plugin.version-catalog")// settings插件放在settings.gradle.kts中
}适用场景:需要向内部兄弟服务提供feign-sdk包的项目工程
2. SDK/工具库项目
plugins {
id("team.aikero.gradle.plugin.common-conf")
id("team.aikero.gradle.plugin.publish-conf")
id("team.aikero.gradle.plugin.api-version-generator")
}适用场景:对外提供的SDK或内部工具库
3. 纯内部工具项目
plugins {
id("team.aikero.gradle.plugin.common-conf")
}适用场景:仅内部使用的工具或脚本项目
版本管理策略
- 语义化版本控制:遵循SemVer规范
- SNAPSHOT版本:仅用于开发阶段
- 正式版本:用于生产环境部署
配置文件组织
建议将环境相关配置分离到独立文件中:
- 环境配置:Nexus仓库、认证信息等
- 项目配置:组名、版本号、JDK版本等
- 构建配置:并行构建、缓存等性能优化设置
