Gradle插件开发(1) - Hello world
目前的开发工具主要是在Android Studio上,对这个工具真的是又恨又爱,只能收希望它越来越好。
这几天,一直在看Gradle插件的相关的东西,希望将自己的这些学习成长的经历记录下来。由易到难,开发一个自己的插件。
准备工作
- Android Studio(建议3.0+)
- gradle 4.0+
我们需要开发一个能打印hello world
的gradle插件,看到hello world,是不是觉得凉凉了,哈哈,一个好的程序员都是从hello world开始的,千里之行始于足下。
我们希望希望开发一个简单的插件,就是打印一行:hello world。
先解释下,所以的gradle的插件,其实就是一个可以挂载在我们工作空间的一个工具,但我们运行我们的gradle脚本时,我们就可以运行我们的插件,这个插件是为我们做一些人工也可以替代的工作,甚至是多个task任务。
项目结构
我们先在我们的工作控件新建一个Android library项目plugin,仅保留src下的main其他的都删掉吧.
src/main下新建一个groovy和resources的文件夹。
其中groovy的文件用来存源码,resources存放静态资源和配置,build.gradle是我们的build环境。
先来看下build.gradle吧。
1 | apply plugin: 'groovy' |
一个插件的主要工作其实是在src文件下,所以我们需要在src/main/groovy
下新建一个文件包名cc.cyning.plugin
,在这个包下新建一个MyPlugin.groovy
文件。
MyPlugin.groovy文件:
1 | import org.gradle.api.Plugin |
在groovy下不是应该用groovy语言么?
其实用java也是ok的,对于不会groovy的同学用java肯定是可以的。
插件实现了org.gradle.api.Plugin
接口,我们需要实现apply
方法。
插件的工作完成,可是怎么标识MyPlugin
文件是插件的入口文件呢?
在src/main/resources
下我们需要定义一个properties
文件:
resources
└── META-INF
└── gradle-plugins
└── cyning.properties
cyning.property:
1 | implementation-class=cc.cyning.plugin.MyPlugin |
这样就是一个完整的插件项目的结构,groovy是我们的实现代码,·、resources/META-INF
配置插件的实现类。
插件使用
maven 本地仓库配置
为了插件的使用,我们需要引入maven本地仓库,怎么上传远程仓库,可以参考我的另外一篇拙作:开源自己的项目到JCenter,不过为了插架开发没必要这么麻烦。
若是你了解可以直接跳过本小节内容。
我们需要在build.gradle
下配置上传到本地的maven配置:
1 | apply plugin: 'groovy' |
使用./gradlew :plugin:uploadArchives
即可在项目下看到maven文件下产生了文件:
而我们的项目怎么用呢?
使用插件
上一步,我们已经生成maven插件,为了能让插件运行,我们需要导入这个gradle插件。
app的build.gradle
配置:
1 | buildscript { |
运行我们的插件:
1 | ./gradlew :app:clean |
小结
我们这节的目的就是能熟悉插件的卡法流程,尤其是开发插件和使用的各种配置,要对应上,properties的配置,以及gradle使用。
- 本文链接:http://ownwell.github.io/2018/07/30/android-gradle_1/
- 版权声明:本博客所有文章除特别声明外,均采用 CC BY-NC-SA 3.0 CN 许可协议。转载请注明出处!