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
目录
相关文章
|
Java 编译器 API
Gradle筑基篇(五)-Gradle自定义插件实战
前面几篇文章笔者对Gradle的一些基础认知,groovy基础语法,以及Gradle 项目中常用的一些api进行了讲解。今天笔者再来讲解一些关于`Gradle插件`的使用
|
Java API Maven
Gradle基础|自定义插件并上传到JitPack
每一个使用 Gradle 的同学,肯定都听过或者写过插件,因为其本身并不难,但碍于现在网上的文章千篇一律,大部分都比较老,新同学一上手反而是和我一样,花了大把时间在最基础的第一步如何写一个简单demo上。再者如果大家使用 AndroidStudio BumBlebee 去创建项目,那对照网上教程差别更大,甚是花费时间,而本篇就是帮你省掉这些时间。 本篇主要概括创建插件的三种方式,并如何上传到 JitPack 中。
157 0
Gradle基础|自定义插件并上传到JitPack
|
Java 容器 Android开发
Gradle 1.12用户指南翻译——第五十八章. 编写自定义插件
其他章节的翻译请参见:http://blog.csdn.net/column/details/gradle-translation.html翻译项目请关注Github上的地址:https://github.com/msdx/gradledoc本文翻译所在分支:https://github.com/msdx/gradledoc/tree/1.12。
1101 0
|
Java Maven Android开发
Gradle自定义插件
Gradle自定义插件 在Gradle中创建自定义插件,Gradle提供了三种方式: 在build.gradle脚本中直接使用 在buildSrc中使用 在独立Module中使用 开发Gradle插件可以在IDEA中进行开发,也可以在Android Studio中进行开发,它们唯一的不同,就是IDEA提供了Gradle开发的插件,比较方便创建文件和目录,而Android Studio中,开发者需要手动创建(但实际上,这些目录并不多,也不复杂,完全可以手动创建)。
1245 0
|
6月前
|
SQL 人工智能 移动开发
Android Studio插件版本与Gradle 版本对应关系
Android Studio插件版本与Gradle 版本对应关系
Android Studio插件版本与Gradle 版本对应关系
|
7月前
|
存储 Java Android开发
Android 开发 - 充分利用Gradle
Android 开发 - 充分利用Gradle
112 2
|
缓存 Android开发
Android Studio中如何清理gradle缓存
Android Studio中如何清理gradle缓存
|
Android开发
Android Studio中修改gradle插件版本和Gradle版本
Android项目中,我们一般要设置gradle插件版本和gradle版本。 项目根目录下的build.gradle文件中,通过classpath可以指定gradle插件的版本。
|
Java Android开发
Android如何通过Gradle发布Android依赖库(aar)到 jitpack 公共仓库
Android如何通过Gradle发布Android依赖库(aar)到 jitpack 公共仓库
488 0
|
4月前
|
开发工具 Android开发 开发者
Android 项目编译 Gradle 配置说明
Android 项目编译 Gradle 配置说明
152 0