自定义Gradle插件流程

android自定义Gradle插件流程记录如下(当然参考了书籍和网上的资料):

第一步:新建android module

新建项目名字随意例如:customPlugin,然后选择把新建的customPlugin项目中src/main目录下的文件全部删除,然后新建groovy和resources目录,其中groovy用来书写我们的逻辑代码,resources目录用来保存plugin的配置信息

第二步:构建plugin的配置信息

resources目录下按照格式新建META-INF目录,在META-INF目录中新建gradle-plugins目录,然后新建插件名称.properties文件。具体格式如下:resources/META-INF/gradle-plugins/插件名称.properties文件。其中除了插件名称是自定义的其他都是固定格式。

第三步:构建plugin的操作类

在groovy目录下新建包名(自定义路径)然后新建TestPlugin 的groovy文件(当然Java也是可以的,只是groovy语法相对灵活;Java就要写在Java目录下了)例如:

class TestPlugin implements Plugin<Project> {
    @Override
    void apply(Project target) {
        println("----Plugin apply run --------------")
    }
}

第四步:让TestPlugin文件生效

在第二步配置的文件(resources/META-INF/gradle-plugins/插件名称.properties文件)中添加:implementation-class=自定义包名.TestPlugin。
经过以上四步一个自定义的Gradle插件就算完成了(虽然这个插件没毛用),但是想要在项目中配置使用还需要发布出去才能用,接下来介绍发布插件,这里主要介绍发布到本地使用。

发布插件到本地的流程

1,首先要用AndroidStudio下载mavenDeployer插件,并重启AndroidStudio。
2,在插件的build.gradle文件中添加如下信息:
plugins {
    id 'groovy'
    id 'maven'
}
或者
apply plugins: 'groovy'
 apply plugins: 'maven'

repositories {
    jcenter()
    google()
    mavenCentral()
}

dependencies {
    implementation gradleApi()
    implementation localGroovy()
}


uploadArchives{
    repositories.mavenDeployer{
        repository(url: uri('../repo'))//本地文件路径
        pom.groupId = '插件名称'//插件的名称需要和resources/META-INF/gradle-plugins/插件名称.properties文件名称一致,否则会导致引用出问题,可以自定义
        pom.artifactId = 'artifactId'//artifactId 自定义,在引用的时候要用到
        pom.version = '1.0.0'//插件版本号
    }
}

这样就可以把maven设置到本地仓库了。

3,执行uploadArchives命令生成repo目录

这个可以用命令行:Windows 用gradlew uploadArchives mac:./gradlew uploadArchives
还可以点击AndroidStudio的task生成如图:


uploadArchives 示意图.jpg

完成以上操作我们就把插件发布到本地maven仓库了。

4,接下来就是项目引入了

首先在项目的跟目录下操作build.gradle文件,如下所示:

// Top-level build file where you can add configuration options common to all sub-projects/modules.
buildscript {
    ext.kotlin_version = "1.3.72"
    repositories {
        google()
        jcenter()
        maven{//这个是本地仓库的目录
            url uri('repo')
        }
    }
    dependencies {
        classpath "com.android.tools.build:gradle:4.1.1"
        classpath "org.jetbrains.kotlin:kotlin-gradle-plugin:$kotlin_version"
        classpath "插件名称:插件artifactId :1.0.0"//这个就是上面uploadArchives配置的: pom.groupId:pom.artifactId:pom.version

        // NOTE: Do not place your application dependencies here; they belong
        // in the individual module build.gradle files
    }
}

allprojects {
    repositories {
        google()
        jcenter()
    }
}

task clean(type: Delete) {
    delete rootProject.buildDir
}

最后一步就是在项目中的build.gradle中添加

plugins {
    id '插件名称'
}
或者
apply plugin:'插件名称'

到这一步整个自定义插件就算完成功能了(这些都是固定格式,只要稍微注意就行,重点是插件内容的实现)。

©著作权归作者所有,转载或内容合作请联系作者
  • 序言:七十年代末,一起剥皮案震惊了整个滨河市,随后出现的几起案子,更是在滨河造成了极大的恐慌,老刑警刘岩,带你破解...
    沈念sama阅读 216,692评论 6 501
  • 序言:滨河连续发生了三起死亡事件,死亡现场离奇诡异,居然都是意外死亡,警方通过查阅死者的电脑和手机,发现死者居然都...
    沈念sama阅读 92,482评论 3 392
  • 文/潘晓璐 我一进店门,熙熙楼的掌柜王于贵愁眉苦脸地迎上来,“玉大人,你说我怎么就摊上这事。” “怎么了?”我有些...
    开封第一讲书人阅读 162,995评论 0 353
  • 文/不坏的土叔 我叫张陵,是天一观的道长。 经常有香客问我,道长,这世上最难降的妖魔是什么? 我笑而不...
    开封第一讲书人阅读 58,223评论 1 292
  • 正文 为了忘掉前任,我火速办了婚礼,结果婚礼上,老公的妹妹穿的比我还像新娘。我一直安慰自己,他们只是感情好,可当我...
    茶点故事阅读 67,245评论 6 388
  • 文/花漫 我一把揭开白布。 她就那样静静地躺着,像睡着了一般。 火红的嫁衣衬着肌肤如雪。 梳的纹丝不乱的头发上,一...
    开封第一讲书人阅读 51,208评论 1 299
  • 那天,我揣着相机与录音,去河边找鬼。 笑死,一个胖子当着我的面吹牛,可吹牛的内容都是我干的。 我是一名探鬼主播,决...
    沈念sama阅读 40,091评论 3 418
  • 文/苍兰香墨 我猛地睁开眼,长吁一口气:“原来是场噩梦啊……” “哼!你这毒妇竟也来了?” 一声冷哼从身侧响起,我...
    开封第一讲书人阅读 38,929评论 0 274
  • 序言:老挝万荣一对情侣失踪,失踪者是张志新(化名)和其女友刘颖,没想到半个月后,有当地人在树林里发现了一具尸体,经...
    沈念sama阅读 45,346评论 1 311
  • 正文 独居荒郊野岭守林人离奇死亡,尸身上长有42处带血的脓包…… 初始之章·张勋 以下内容为张勋视角 年9月15日...
    茶点故事阅读 37,570评论 2 333
  • 正文 我和宋清朗相恋三年,在试婚纱的时候发现自己被绿了。 大学时的朋友给我发了我未婚夫和他白月光在一起吃饭的照片。...
    茶点故事阅读 39,739评论 1 348
  • 序言:一个原本活蹦乱跳的男人离奇死亡,死状恐怖,灵堂内的尸体忽然破棺而出,到底是诈尸还是另有隐情,我是刑警宁泽,带...
    沈念sama阅读 35,437评论 5 344
  • 正文 年R本政府宣布,位于F岛的核电站,受9级特大地震影响,放射性物质发生泄漏。R本人自食恶果不足惜,却给世界环境...
    茶点故事阅读 41,037评论 3 326
  • 文/蒙蒙 一、第九天 我趴在偏房一处隐蔽的房顶上张望。 院中可真热闹,春花似锦、人声如沸。这庄子的主人今日做“春日...
    开封第一讲书人阅读 31,677评论 0 22
  • 文/苍兰香墨 我抬头看了看天上的太阳。三九已至,却和暖如春,着一层夹袄步出监牢的瞬间,已是汗流浃背。 一阵脚步声响...
    开封第一讲书人阅读 32,833评论 1 269
  • 我被黑心中介骗来泰国打工, 没想到刚下飞机就差点儿被人妖公主榨干…… 1. 我叫王不留,地道东北人。 一个月前我还...
    沈念sama阅读 47,760评论 2 369
  • 正文 我出身青楼,却偏偏与公主长得像,于是被迫代替她去往敌国和亲。 传闻我的和亲对象是个残疾皇子,可洞房花烛夜当晚...
    茶点故事阅读 44,647评论 2 354

推荐阅读更多精彩内容