Gradle Plugin

自定義gradle插件,三種創建方式:

  • build.gradle
  • buildSrc
  • plugin module
build.gradle

app.build.gradle中直接編寫

apply plugin: AppPlugin
class AppPlugin implements Plugin<Project> {
    @Override
    void apply(Project project) {
        project.task('AppPluginTask') {
            doLast {
                println "AppPluginTask"
            }
        }
    }
}
buildSrc
  1. 根目錄下創建文件夾buildSrc
  2. buildSrc下創建build.gradle
apply plugin: 'java-library'
apply plugin: 'kotlin'
apply plugin: 'maven'

sourceSets {
    main {
        resources {
            srcDir 'src/main/resources'
        }
    }
}

buildscript {
    ext.kotlin_version = '1.4.20'
    repositories {
        mavenCentral()
    }
    dependencies {
        classpath "org.jetbrains.kotlin:kotlin-gradle-plugin:$kotlin_version"
    }
}

repositories {
    google()
    jcenter()
    mavenCentral()
}

dependencies {
    implementation gradleApi()
    implementation localGroovy()
    implementation 'com.android.tools.build:gradle:4.1.2'
    implementation "org.jetbrains.kotlin:kotlin-stdlib-jdk8:$kotlin_version"
}

編譯一下項目

  1. 創建java文件夾和resources文件夾


  2. java下創建包名,然後新建類MyPlugin實現Plugin接口即可

package com.chenxuan.gradle;

import org.gradle.api.Plugin;
import org.gradle.api.Project;

public class MyPlugin implements Plugin<Project> {
    @Override
    public void apply(Project project) {
        System.out.println("MyPlugin");
    }
}
  1. resources下創建文件夾META-INF.gradle-plugins,在其下創建properties文件,properties文件名應爲packagename.properties


  2. 修改properties文件
implementation-class=com.chenxuan.gradle.CustomPlugin
  1. app下build.gradle引入插件,id爲插件所在包名
plugins {
    id 'com.android.application'
    id 'kotlin-android'
    id 'kotlin-kapt'
    id 'com.chenxuan.gradle'
}
plugin module

新建module,刪光文件夾下所有文件,只留build.gradle

apply plugin: 'java-library'
apply plugin: 'kotlin'
apply plugin: 'maven'

sourceSets {
    main {
        java {
            srcDir 'src/main/java'
        }
        resources {
            srcDir 'src/main/resources'
        }
        kotlin {
            srcDir 'src/main/kotlin'
        }
    }
}

repositories {
    google()
    jcenter()
    mavenCentral()
}

dependencies {
    implementation gradleApi()
    implementation localGroovy()
    implementation 'com.android.tools.build:gradle:4.1.2'
}

接下來流程和buildSrc一致,得到最終目錄:



build.gradle下新增

uploadArchives {
    repositories {
        mavenDeployer {
            pom.groupId = 'com.chenxuan.plugin'//包名
            pom.artifactId = 'custom-plugin'//id
            pom.version = '1.0.0'//版本號
            repository(url: uri('../repo'))
        }
    }
}

執行uploadArchives task,根目錄下得到Repo文件夾。


根目錄下build.gradle引入插件



app下build.gradle添加插件

plugins {
    id 'com.android.application'
    id 'kotlin-android'
    id 'kotlin-kapt'
    id 'com.chenxuan.plugin'
}
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章