注:以下示例基于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.name
projectPath project.getProjectDir().absolutePath
}
- 执行命令行
./gradlew clean -q