注:以下示例基于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