zoukankan      html  css  js  c++  java
  • 自己定义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" } }

  • 相关阅读:
    CXF整合Spring之JaxWsProxyFactoryBean调用
    js代码判断浏览器种类IE、FF、Opera、Safari、chrome及版本
    Python hypot() 函数
    Python cos() 函数
    Python atan2() 函数
    Python asin() 函数
    Python atan() 函数
    Python acos() 函数
    Python uniform() 函数
    Python shuffle() 函数
  • 原文地址:https://www.cnblogs.com/gavanwanggw/p/7183207.html
Copyright © 2011-2022 走看看