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 开发工具 Android开发
Cocos Creator 2.4.6 Android Gradle 版本升级为 6.5.1(插件4.1.0)
Cocos Creator 2.4.6 Android Gradle 版本升级为 6.5.1(插件4.1.0)
315 1
IDEA 降级gradle插件教程
IDEA 降级gradle插件教程
1341 0
IDEA 降级gradle插件教程
|
Android开发
Android Studio中修改gradle插件版本和Gradle版本
Android项目中,我们一般要设置gradle插件版本和gradle版本。 项目根目录下的build.gradle文件中,通过classpath可以指定gradle插件的版本。
|
5月前
|
Java API 项目管理
Java一分钟之-Gradle插件开发:自定义构建逻辑
【6月更文挑战第5天】Gradle插件开发详解:从入门到发布。文章介绍如何创建自定义插件,强调依赖管理、任务命名和配置阶段的理解。示例代码展示插件实现及避免常见问题的方法。最后,讨论插件的发布与共享,助你提升构建效率并贡献于开发者社区。动手实践,打造强大Gradle插件!
123 3
|
IDE Java API
Gradle 系列(2)手把手带你自定义 Gradle 插件
Gradle 系列(2)手把手带你自定义 Gradle 插件
1028 0
Gradle 系列(2)手把手带你自定义 Gradle 插件
|
6月前
|
存储 缓存 Java
Gradle笔记 八 Gradle 插件(二)
Gradle笔记 八 Gradle 插件
136 0
|
6月前
|
Java
Gradle笔记 八 Gradle 插件(一)
Gradle笔记 八 Gradle 插件
138 0
|
IDE Java 应用服务中间件
以Gradle插件的方式为Java web项目启动Tomcat
在社区版IntelliJ IDEA除了用SmartTomcat,还有什么方式可以在可调试的情况下启动Tomcat呢,来试试com.bmuschko.tomcat插件吧
464 0
以Gradle插件的方式为Java web项目启动Tomcat
|
Java 程序员 Maven
在AndroidStudio中自定义Gradle插件
在AndroidStudio中自定义Gradle插件
在AndroidStudio中自定义Gradle插件
Gradle进阶篇(七)-AGP插件详解
前面几篇文章我们讲解了关于关于`Gradle的基础`,`Gradle生命周期`,`Gradle相关Api`的讲解,以及`Gradle自定义插件`,`Gradle Maven仓库管理`.今天这篇文章我们来讲解下`Android Gradle Plugin`相关知识。