核心是三步:编写实现plugin接口的插件类、配置build.gradle启用java-gradle-plugin和maven-publish插件、执行./gradlew publish上传至nexus/artifactory。

在 Gradle 中编写自定义插件并团队共享,核心是:把插件写成独立的 Gradle 项目(Java/Kotlin),发布到私有仓库(如 Nexus/Artifactory 或 GitHub Packages),再在其他项目中通过 plugins 块或 buildscript 引入。关键在于插件工程结构、元信息声明、发布配置和消费方式的一致性。
插件项目结构要规范
新建一个纯 Gradle 项目(不依赖 Android 等其他插件),推荐用 Kotlin 编写(更简洁,Gradle 官方推荐):
- 根目录下建
src/main/kotlin(或java),放插件主类(实现Plugin<project></project>) - 在
src/main/resources/META-INF/gradle-plugins/下创建com.example.myplugin.properties文件,内容为:implementation-class=com.example.MyCustomPlugin -
build.gradle.kts中需应用java-gradle-plugin插件,并声明插件 ID 和版本
打包发布到私有仓库
发布前确保私有仓库(如 Nexus)已配置好仓库地址和凭据:
- 在插件项目中应用
maven-publish和signing(若需要签名)插件 - 配置
publishing { repositories { maven { url = uri("https://nexus.example.com/repository/maven-releases/") } } } - 设置
group(如com.example)、version(语义化,如1.2.0)、artifactId(如gradle-myplugin) - 执行
./gradlew publish即可上传到私仓,团队成员无需额外配置即可拉取
在业务项目中使用插件
推荐使用声明式插件 DSL(Gradle 7.0+ 默认方式):
- 在
settings.gradle.kts中添加插件仓库:pluginManagement { repositories { maven { url = uri("https://nexus.example.com/repository/maven-public/") } } } - 在模块的
build.gradle.kts中直接声明:plugins { id("com.example.myplugin") version "1.2.0" } - 若需动态传参,可在插件内定义
Extension类,并在build.gradle.kts中用configure<mypluginextension> { ... }</mypluginextension>设置
版本管理和兼容性注意点
团队协作中容易踩坑的地方:
- 插件发布的
group和version必须与消费端pluginManagement中的引用完全一致 - 避免在插件中硬编码路径、环境变量或本地路径,应通过 Extension 或 Project 属性传递
- Gradle 版本兼容性需明确标注(如
gradleApi()或gradleTestKit()测试不同版本) - 建议搭配 CI(如 Jenkins/GitHub Actions)自动构建发布,每次
git tag v1.2.0触发发布流程
不复杂但容易忽略细节,尤其 META-INF 路径、pluginManagement 作用域、以及私仓认证配置。只要结构对、发布通、引用准,团队就能零成本复用。
Java免费学习笔记:立即使用
解锁 Java 大师之旅:从入门到精通的终极指南











