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

自己定义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.custom

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

public class CustomPlugin implements Plugin<Project> {
    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"
    }
}
时间: 2024-08-29 00:15:42

自己定义Gradle插件之&quot;Hello World&quot;的相关文章

Android官方技术文档翻译——Gradle 插件用户指南(4)

近期赶项目,白天基本没时间,仅仅有晚上在家的时候才干看一看.昨天晚上仅仅翻译完了第四章,今天就仅仅发第四章吧. 本文译自Android官方技术文档<Gradle Plugin User Guide>,原文地址:http://tools.android.com/tech-docs/new-build-system/user-guide. 翻译不易.转载请注明CSDN博客上的出处: http://blog.csdn.net/maosidiaoxian/article/details/4195580

用IntelliJ实现android gradle插件

用IntelliJ实现android gradle插件 android的gradle插件用了不少了,比如说官方的应用构建插件(com.android.application),lib构建插件(com.android.library),还有第三方的比如辅助multidex的DexKnifePlugin.但是怎么自己创建一个gradle插件一直不明白,今天就试一试自己撸一个android gradle插件,毕竟实践出真知. 基础知识 首先得知道一个gradle插件有需要哪些元素. 我们以androi

Android 热修复Nuwa的原理及Gradle插件源码解析

现在,热修复的具体实现方案开源的也有很多,原理也大同小异,本篇文章以Nuwa为例,深入剖析. Nuwa的github地址 https://github.com/jasonross/Nuwa 以及用于hotpatch生成的gradle插件地址 https://github.com/jasonross/NuwaGradle 而Nuwa的具体实现是根据QQ空间的热修复方案来实现的.安卓App热补丁动态修复技术介绍.在阅读本篇文章之前,请先阅读该文章. 从QQ空间终端开发团队的文章中可以总结出要进行热更

如何使用Android Studio开发Gradle插件

缘由 首先说明一下为什么会有这篇文章.前段时间,插件化以及热修复的技术很热,Nuwa热修复的工具NuwaGradle,携程动态加载技术DynamicAPK,还有希望做最轻巧的插件化框架的Small.这三个App有一个共同的地方就是大量的使用了Gradle这个强大的构建工具,除了携程的框架外,另外两个都发布了独立的Gradle插件提供自动化构建插件,或者生成热修复的补丁.所以学习一下Gradle插件的编写还是一件十分有意义的事. 插件类型 Gradle的插件一般有这么几种: 一种是直接在项目中的g

Android官方技术文档翻译——Gradle 插件用户指南(7)

本文译自Android官方技术文档<Gradle Plugin User Guide>,原文地址:http://tools.android.com/tech-docs/new-build-system/user-guide. 翻译不易,转载请注明CSDN博客上的出处: http://blog.csdn.net/maosidiaoxian/article/details/42417779 前三章见<Android官方技术文档翻译--Gradle 插件用户指南(1-3)>. 第四章见&

Android Gradle插件用户指南

原文Gradle Plugin User Guide - Android Tools Project Site samples see bottom of New Build System 参考Gradle For Android Training Course 1 简介 这篇文档是基于0.9版本的Gradle插件,1.0以前的版本由于不兼容,可能会有所不同 1.1 新的构建系统的目标 新构建系统的目标是: 使得代码和资源的重用更加简单 使得创建同一应用程序的不同版本更加容易,不管是多个apk版

Android Gradle插件用户指南(译)

Android Gradle插件用户指南(译) 原文Gradle Plugin User Guide - Android Tools Project Site samples see bottom of New Build System 参考Gradle For Android Training Course 1 简介 这篇文档是基于0.9版本的Gradle插件,1.0以前的版本由于不兼容,可能会有所不同 1.1 新的构建系统的目标 新构建系统的目标是: 使得代码和资源的重用更加简单 使得创建同

Android官方技术文档翻译——Gradle 插件用户指南(1-3)

不知道是什么网络问题,上午一直发不了博客,其它页面基本正常,就是在写博客这里,每次打开都是响应超时.刚才用了VPN,顺便试了一下,竟然能够编辑.想是CDN之类的问题吧. 这次翻译的是Gradle 插件用户指南,也就是Gradle上的Android插件的官方文档.文档非常长,加上近期激情不够,翻译得有些慢.到昨天为止,才译到第四章.今天先发前三章. 本文译自Android官方技术文档<Gradle Plugin User Guide>,原文地址:http://tools.android.com/

Android Studio 更新gradle插件失败的解决办法

Android Studio 每次更新版本都会更新Gradle这个插件,但由于长城的问题每次更新都是失败,又是停止在"refresh"ing Gradle Project ,有时新建项目的时候报 Gradle Project Compile Error 等等相关的问题 解决这些问题办法是 首先打开android studio项目 找到项目目录gradle\wrapper\gradle-wrapper.properties这个文件 内容如下 #Wed Apr 10 15:27:10 PD