Gradle 自定义插件-阿里云开发者社区

开发者社区> 开发与运维> 正文

Gradle 自定义插件

简介: Gradle 自定义插件 官方原文 gradle学习官方翻译网站 1.新建项目 配置build.gradle //使用官方的 `groovy` 插件 apply plugin: 'groovy' //添加api依赖 dependencies {dependencyHandler -> dependencyHandler .

Gradle 自定义插件

官方原文

gradle学习官方翻译网站

1.新建项目

配置build.gradle

//使用官方的 `groovy` 插件
apply plugin: 'groovy'

//添加api依赖
dependencies {dependencyHandler ->
    dependencyHandler .compile gradleApi()
   dependencyHandler. compile localGroovy()
}
//添加当前使用的gradle版本为2.1.3
dependencies { DependencyHandler dependencyHandler ->
    dependencyHandler.compile 'com.android.tools.build:gradle:2.1.3'
    //dependencyHandler.compile fileTree()
}




创建资源

注意,红框内的两者名保持一致!


img_d9dfd451d5e4712e80a6bd9c8d9a60c1.png
image.png

2.新建pluginLaunch类

 class MyPluginLaunch implements Plugin<Project> {

    /**
     * 因为是遍历 List 顺序添加的,所以可以在 Plugin 中通过先后顺序一一添加
     registerTransform 方法第二个参数是 dependsOn, 可以手动设置依赖关系
     * @param project
     */

    @Override
    public void apply(Project project) {

              ZDMLogger.i('Project enable MyPluginLaunch plugin')

        project.extensions.create("ccjReleaseInfo",ReleaseInfoExtension)        //创建扩展属性

        project.tasks.create("ccjReleaseTask",ReleaseInfoTask) //创建自定义任务

    }

}



3.新建自定义属性类Extension

该属性可以在gradle中直接使用类似于android{}

class ReleaseInfoExtension extends Extension {

    String versionName
    String versionCode
    String versionInfo
    String fileName


    @Override
    public String toString() {
        return "ReleaseInfoExtension{" +
                "versionName='" + versionName + '\'' +
                ", versionCode='" + versionCode + '\'' +
                ", versionInfo='" + versionInfo + '\'' +
                ", fileName='" + fileName + '\'' +
                '}'
    }
}


4.新建自定义Task

用来处理自定义属性ReleaseInfoExtension中的变量


class ReleaseInfoTask extends DefaultTask{

    ReleaseInfoTask() {
        group='zdmrouter'
        description='the realeaseInfo Task of zdm router'
        mustRunAfter()
    }

    /**
     * 在doFitst 和doLast中间执行
     */
    @TaskAction
    void doAction (){

        updateInfo()
    }




    private void updateInfo(){

        String versionCodeMsg=project.extensions.getByName("ccjReleaseInfo").versionCode //其中ccjReleaseInfo为在launcher中定义的变量

        ZDMLogger.i( "ReleaseInfoTask.updateInfo.versionCodeMsg>>>>"+versionCodeMsg)



    }

}

5.将plugin 发布到jcenter 或者自己搭建的服务器仓库地址.然后进行依赖

//在root项目中的dependencies中
        classpath 'com.smzdm:zdm_router_register:1.1.0'


//然后,在使用的地方,;类似于依赖Android插件一样.依赖自己的插件
apply plugin: 'com.smzdm.android.router.register'



6.依赖完成后,可以在apply自定义插件的gradle中进行

配置自定义属性

ccjReleaseInfo {

    versionName = "1.0"
    versionCode = 1
    versionInfo = "versionInfo>>ccjReleaseInfo"
}

运行自定义Task

gradle ccjReleaseTask

或者在gradle面板中直接调用

img_19fa8aed9a6ce17e51f7bcd280573858.png
image.png

版权声明:本文内容由阿里云实名注册用户自发贡献,版权归原作者所有,阿里云开发者社区不拥有其著作权,亦不承担相应法律责任。具体规则请查看《阿里云开发者社区用户服务协议》和《阿里云开发者社区知识产权保护指引》。如果您发现本社区中有涉嫌抄袭的内容,填写侵权投诉表单进行举报,一经查实,本社区将立刻删除涉嫌侵权内容。

分享:
开发与运维
使用钉钉扫一扫加入圈子
+ 订阅

集结各类场景实战经验,助你开发运维畅行无忧

其他文章