zoukankan      html  css  js  c++  java
  • 《Gradle权威指南》--Gradle插件

    No1:

    应用插件

    apply plugin:'java'
    apply plugin:org.gradle.api.plugins.JavaPlugin
    apply plugin:JavaPlugin

    这三种写法等价

    注:‘java‘是一个plugin id

    No2:

    应用脚本插件

    //version.gradle
    ext{
        versionName='1.0.0'
        versionCode=1
    }
    
    //build.gradle
    apply from:'version.gradle'
    task ex52PrintlnTask<<{
        println "App版本是:${versionName},版本号是:${versionCode}"
    }

    结果

    No3:

    //apply方法
    void apply(Map<String,?> options);
    void apply(Closure closure);
    void apply(Action<? super ObjectConfigurationAction> action);
    //闭包方式
    apply{
        plugin 'java'
    }
    //Action方式
    apply(new Action<ObjectConfigurationAction>(){
        @Override
        void execute(ObjectConfigurationAction objectConfigurationAction){
            objectConfigurationAction.plugin('java')
        }
    })

    No4:

    应用第三方发布的插件

    buildscript{
        repositoried{
            jcenter()
        }
        dependencies{
            classpath 'com.android.tools.build:gradle:1.5.0'
        }
    }
    
    apply plugin: 'com.android.application'

    No5:

    使用plugins DSL应用插件

    plugins{
        id 'java'
    }
    
    plugins{
        id "org.sonarqube" version "1.2"
    }

    No6:

    自定义插件

    apply plugin:Ex53CustomPlugin
    class Ex53CustomPlugin implements Plugin<Project>{
        void apply(Project project){
            project.task('ex53CustomTask')<<{
                println "这是一个通过自定义插件方式创建的任务"
            }
        }
    }

    结果

    注:自定义的插件必须要实现Plugin接口,这个接口只有一个apply方法,该方法在插件被应用的时候执行

    No7:

    创建一个Groovy工程

    apply plugin:'groovy'
    dependencies{
        compile gradleApi()
        compile localGroovy()
    }

    插件类

    package com.github.rujews.plugins
    
    import org.gradle.api.Plugin
    import org.gradle.api.Project
    
    class Ex53CustomPlugin implements Plugin<Project>{
        @Override
        void apply(Project target){
            target.task('ex53CustomTask')<<{
                println "这是一个通过自定义插件方式创建的任务"
            }
        }
    }

    在src/main/resources/META-INF/gradle-plugins/目录下新建一个名字为plugin id的properties的文件

    implementation-class=com.github.rujews.plugins.Ex53CustomPlugin

    其他地方调用

    buildscript{
        dependencies{
            classpath files('libs/example53.jar')
        }
    }
    
    apply plugin: 'com.github.rujews.plugins.ex53customplugin'
  • 相关阅读:
    微信小程序地图组件中的include-points怎样缩放视野并将所有坐标点在规定的视野内展示?
    两种常见的mysql集群架构
    layui+oss阿里云附件上传回调报错问题
    redis hash过期时间
    Static和Extern关键字理解
    代理模式
    中介者模式
    访问者模式
    模板方法模式
    迭代器模式
  • 原文地址:https://www.cnblogs.com/anni-qianqian/p/8602741.html
Copyright © 2011-2022 走看看