注:以下示例基于Gradle8.0
1、发布插件
- 复制一分 buildSrc,执行命令行,生成一个新目录 leon-gradle-plugin
cp -rf buildSrc leon-gradle-plugin
- 在 leon-gradle-plugin 目录下的 build.gradle 中引入maven
plugins{// 引用 Groovy 插件,编译插件工程中的代码id 'groovy'// 引用 maven插件,用于发布 ( >= Gradle 7.0)id 'maven-publish'
// //引用 maven插件,用于发布 ( < Gradle 7.0)
// id 'maven'
}声明仓库地址
//repositories {
// jcenter()
//}//声明依赖包
dependencies {implementation gradleApi()implementation localGroovy()
}/************* 发布相关 ****************/
//配置 maven 插件中的 发布 任务(>= Gradle 7.0)
publishing {publications {mavenJava(MavenPublication){//设置groupId,通常为当前插件的包名groupId = 'com.leon.router.gradle'//设置artifactId,作为当前插件名称artifactId = 'leon-gradle-plugin'//设置插件版本号version = '1.0.0'// 指定要发布的组件,例如Java库或插件等from components.java}}repositories{maven {//设置发布路径为 工程根目录下的 leon-publish 文件夹url = uri("../leon_publish")}}
}配置 maven 插件中的 发布 任务(< Gradle 7.0)
//uploadArchives{
// repositories{
// mavenDeployer{
//
// //设置发布路径为 工程根目录下的 leon-publish 文件夹
// repositories(url: uri("../leon_publish")){
//
// //设置groupId,通常为当前插件的包名
// pom.groupId = 'com.leon.router.gradle'
//
// //设置artifactId,作为当前插件名称
// pom.artifactId = 'leon-gradle-plugin'
//
// //设置插件版本号
// pom.version = '1.0.0'
//
// }
// }
// }
//}
- 在根目录下的 setting,gradle 中引入 模块 leon-gradle-plugin
- 执行发布任务,命令行执行以下命令
//Gradle大于等于7.0时
./gradlew :leon-gradle-plugin:publish//Gradle小于7.0时
./gradlew :leon-gradle-plugin:uploadArchives
根目录下就会生成 leon_publish目录
2、在其他工程中引用发布插件
新建一个Gradle8.0的Android工程 My Application
2.1、引入自定义maven仓库
在根目录的setting.gradle中,加入以下内容
buildscript {repositories {// 1、引入自定义maven仓库maven {url uri("/Users/leon/AndroidStudioProjects/GradleLeaning2/leon_publish")}}dependencies {//2、声明依赖插件classpath 'com.leon.router.gradle:leon-gradle-plugin:1.0.0'}
}
2、应用插件
在app目录下的build.gradle中加入以下配置
plugins {alias(libs.plugins.android.application)alias(libs.plugins.jetbrains.kotlin.android)//3、应用插件id 'com.leon.rt'
}//4、向插件传递参数
leonEx {projectName project.nameprojectPath project.getProjectDir().absolutePath
}
- 执行命令行
./gradlew clean -q