如何在不同Git仓库的多项目间共享Gradle任务与通用配置
方案1:使用Gradle约定插件(Convention Plugin,官方推荐方案)
这个是灵活性、可维护性最高的实现方式,完全符合Gradle生态最佳实践,操作步骤如下:
- 新建独立的公共基础仓库,专门存放共享配置,仓库参考结构:
shared-convention-plugins/ ├── build.gradle ├── settings.gradle └── src/ └── main/ └── groovy/ └── com.yourcompany.java-convention.gradle
- 在约定插件的配置文件
com.yourcompany.java-convention.gradle中写入所有公共配置:
// 预先引入所有依赖的插件 plugins { id 'checkstyle' id 'pmd' id 'com.github.hierynomus.license' version '0.16.1' apply false id 'com.diffplug.spotless' version '6.20.0' apply false id 'com.jfrog.artifactory' version '4.31.9' apply false } // 应用插件 apply plugin: 'checkstyle' apply plugin: 'pmd' apply plugin: 'com.github.hierynomus.license' apply plugin: 'com.diffplug.spotless' apply plugin: 'com.jfrog.artifactory' // 直接复用你现有的配置 checkstyle { showViolations = false ignoreFailures = true // 其余原有配置 } pmd { // 原有配置 } license { // 原有配置 } spotless { // 原有配置 } artifactory { // 原有配置 }
- 将该约定插件打包发布到公司内部的私有Maven/Artifactory仓库
- 所有业务项目只需在自身
build.gradle中引入该插件即可,无需重复写配置:
plugins { id 'java' id 'com.yourcompany.java-convention' version '1.0.0' // 替换为实际发布的版本号 } // 如有差异化需求,可以直接覆盖对应配置项,优先级高于共享配置
方案2:使用共享初始化脚本(轻量快速方案)
如果不需要复杂的扩展能力,想要快速落地,可以用Gradle初始化脚本实现:
- 将所有公共配置存入
shared-init.gradle文件,放到公共基础仓库中 - 业务项目可以通过两种方式引用:
- 执行构建时指定脚本路径:
./gradlew build -I 本地路径/shared-init.gradle - 把脚本同步到业务项目的
gradle/目录下,在settings.gradle中直接引用:
apply from: 'gradle/shared-init.gradle' - 执行构建时指定脚本路径:
补充说明
- 如果需要支持不同项目的差异化配置,可以在约定插件中定义扩展属性,业务项目按需传入参数即可
- 所有第三方插件的版本统一在共享配置中管理,避免各业务项目出现版本不一致的兼容性问题
内容的提问来源于stack exchange,提问作者Rpj
相关产品推荐
相关产品推荐

