自定义Gradle插件

开发发布出去的Gradle插件

  1. 新建一个module,用于开发gradle插件
  2. 将Module里面的内容删除,只保留build.gradle文件和src/main目录
  3. 由于是基于groovy开发的,所以需要在main目录下新建groovy目录
  4. 为了让我们的groovy类申明为gradle的插件,新建的groovy需要实现org.gradle.api.Plugin接口
package  com.hc.plugin

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

public class MyPlugin implements Plugin<Project> {

    void apply(Project project) {
        System.out.println("========================");
        System.out.println("hello gradle plugin!");
        System.out.println("========================");
    }
}

打包到本地Maven

repositories {
    mavenCentral()
}

uploadArchives {
    repositories {
        mavenDeployer {
            pom.groupId = 'com.xrouter.plugin'
            pom.artifactId = 'guardplugin'
            pom.version = '1.0.0'
            repository(url: uri('../repo'))
        }
    }
}

使用自定义的插件

apply plugin: 'XX'

buildscript {
    repositories {
        maven { // 本地Maven仓库地址
            url '../repo'
        }
    }
    dependencies {
        classpath 'com.xrouter.plugin:guardplugin:1.0.0'
    }
}
  1. 需要告知gradle,哪一个是自定义的插件类。具体是这样的,需要在main目录下新建resources目录,然后在resources目录里面再新建META-INF目录,再在META-INF里面新建gradle-plugins目录【这些都是不能变得】,最后在gradle-plugins目录里面新建properties文件,注意这个文件的命名,你可以随意取名,但是后面使用这个插件的时候,会用到这个名字。如取名:XX.properties

那么在使用自定义的插件时候则需要写成: apply plugin: 'XX'

然后在XX.properties文件里面指明你自定义的类

implementation-class=XX.xx.MyPlugin

开发只针对当前项目的Gradle插件

对于不需要打包出去的,只是在项目中使用的插件,可以按照下面的方式进行开发。

  1. 新建Module,名称必须为buildSrc
  2. 修改build.gradle内容:
apply plugin: 'groovy'

dependencies {
    compile gradleApi()//gradle sdk
    compile localGroovy()//groovy sdk
}

repositories {
    jcenter()
}
  1. 在需要使用这个插件的模块的build.gradle中加入
    apply plugin: 包名.XXXPlugin
    

results matching ""

    No results matching ""