湖畔镇

Gradle插件

Gradle插件是一组任务,几乎所有的任务,如编译任务,设置域对象,设置源文件等都由插件处理

编写Gradle插件

  1. 创建一个模块(假设模块名叫library),清空除build.gradle以外的文件,清空build.gradle的内容

  2. 新建src文件夹,在src下新建main文件夹,在main下新建groovy和resources文件夹

  3. groovy下新建包名文件夹,在里面创建类,创建一个PluginImpl.groovy

    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    package com.github.lakeshire
    import org.gradle.api.Plugin
    import org.gradle.api.Project

    public class PluginImpl implements Plugin<Project> {
    void apply(Project project) {
    project.task('TestTask') {

    }
    }
    }
  4. resources下创建META-INF文件夹,META-INF下创建gradle-plugins文件夹,gradle-plugins下新建属性文件,文件命名就是插件的名字,如plugin.test.properties

    1
    implementation-class=com.github.lakeshire.PluginImpl

    这样就创建了一个叫plugin.test的插件,插件里有一个TestTask任务

  5. 发布到本地仓库

    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    repositories {
    mavenCentral()
    }
    group='com.github.lakeshire'
    version='1.0.0'

    uploadArchives {
    repositories {
    mavenDeployer {
    repository(url : uri('../repo'))
    }
    }
    }

    Sync之后会出现一个uploadArchives任务,运行就在repo目录下出现我们的插件

  6. 使用插件,在使用到的gradle.build中加入

    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    buildscript {
    repositories {
    maven {
    url uri('../repo')
    }
    }
    dependencies {
    classpath 'com.github.lakeshire:library:1.0.0'
    }
    }

    // 就是模块名
    apply plugin: 'library'

分享