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'
}
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章