博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
自己定义Gradle插件之"Hello World"
阅读量:6414 次
发布时间:2019-06-23

本文共 2111 字,大约阅读时间需要 7 分钟。

自己定义Gradle插件之”Hello World”


0.新建一个用于开发这个插件的目录

1.确定Plugin id

Plugin id一般定义为java 包名。

  • 由字母和数字及“.”和“-”组成
  • 至少有一“.”字符
  • org.gradle 和 com.gradleware 不能使用
  • 不能以“.“開始或结尾
  • 不能含有连续的“.”

本实例的Plugin id为:me.zhangls.custom

2.配置插件

在确定的目录下建好src/main/resources/META-INF/gradle-plugins/目录结构,在使用那个plugin id新建一个me.zhangls.custom.properties文件。里面配置为

implementation-class=me.zhangls.custom.CustomPlugin

3.写Plugin类

依据implementation-class那个包名路径,详细目录为src/main/groovy/me/zhangls/custom/CustomPlugin.groovy去建立Plugin实现类

package me.zhangls.customimport org.gradle.api.Pluginimport org.gradle.api.Projectpublic class CustomPlugin implements Plugin
{
void apply(Project project) { project.task('hello') << { println "Hello World" } }}

解释说明

  • 这个Project就是后面那个使用插件的那个build.gradle(一个build.gradle文件就是一个project)
  • 为什么一定要project.task('hello') <<这么怪异的写法,直接用project.task('hello')不能够吗?它们的差别是:前一个在配置阶段。后一个是在执行阶段。

    实际的含义你懂的,嘻嘻。

4.安装插件

//apply是Project的一个方法。plugin是一个參数,maven是一个值//用来部署到本地maven仓库apply plugin: 'maven'//用来编译Groovy代码(由于我的插件是用groovy写的)apply plugin: 'groovy'//dependencies是Project的一个方法。而{}里面是一个闭包,相当于匿名方法块。dependencies {    //加入Gradle Api依赖    compile gradleApi()    //加入本地groovy依赖    compile localGroovy()}//这三个字段都要加,用来表示安装到本地maven仓库的位置。

group = 'me.zhangls' //网上有这么写的。也有效果,主要是能够改变项目名称,可是在文档中没有找到相关说明。 //也能够不写,那么会取目录的名称,来作为这个值。

archivesBaseName = 'custom' //版本 version = '0.1'

执行gradle install安装的本地Maven仓库

建议这个时候,能够使用Android Studiod导入这个项目,进行兴许的开发。

  • 本身as不支持创建gradle plugin功能
  • 建好对应的目录结构。as能够创建一个项目

5.使用插件

//配置执行脚本所须要的环境buildscript {    //配置仓库    repositories {        mavenLocal()    }       //制定要依赖仓库里详细插件    dependencies {        classpath 'me.zhangls:custom:0.1'    } }//应用这个插件apply plugin: 'me.zhangls.custom'

执行gradle hello,就能够看到Hello World了

6.写Task类(可选)

  1. 改动CustomPlugin
    project.task('hello',Type: HelloTask)
  2. 加入一个HelloTask
package me.zhangls.custom;import org.gradle.api.DefaultTask;import org.gradle.api.tasks.TaskAction;public class HelloTask extends DefaultTask {
//当执行这个任务的时候,执行这种方法。

@TaskAction def action() { println "hello" } }

转载于:https://www.cnblogs.com/gavanwanggw/p/7183207.html

你可能感兴趣的文章
C指针练习
查看>>
web项目buildPath与lib的区别
查看>>
php对redis的set(集合)操作
查看>>
我的友情链接
查看>>
ifconfig:command not found的解决方法
查看>>
js使用正则表达式判断手机和固话格式
查看>>
计算机是怎么存储数字的
查看>>
github精选:微信小程序开发技巧(12月31日更新)2016
查看>>
struts2 中文 url参数
查看>>
nodejs
查看>>
判断上传文件类型和文件大小
查看>>
对拉勾网招聘信息做一次数据分析(上)--40行代码拿下所有数据
查看>>
Windows10系统各版本份额出炉:十月更新占有率不高。
查看>>
如何查看局域网内所有的IP
查看>>
谈2017年高考对编程人生的思索
查看>>
关于 Dubbo Failed to save registry store file, cause: Can not lock the registry cache file
查看>>
spring事务管理
查看>>
【腾讯开源】iOS爆内存问题解决方案-OOMDetector组件
查看>>
Linux TTY、PTS、PTY详解
查看>>
java泛型中T、E、K、V、?等含义
查看>>