一个简单的demo的目录结构
1. 新建一个Android Library 的工程,删掉除src和build.gradle外的文件
2. src/main下新建groovy目录,然后可以在其下创建Java类似的packageName和class
3. 创建插件类 implement Plugin<Project>, 实现apply方法
4. src/main创建resources/META-INF/gralde-plugin目录,创建文件 name.properties, 这儿的name即为apply plugin的id,在文件中声明插件类
implementation-class=XXX(3中定义的class,包含packageName)
5.
修改build.gradle文件,并将插件上传到本地库中
apply
plugin
:
'groovy'
//导入java插件用于,编译打包我们的插件
apply
plugin:
'maven'
//maven插件,用于上传插件到仓库
//uploadArchives 类型是upload,这个task不是'maven'创建的
//而是'maven'定义了一个rule,而后由我们自己创建的,关于rule,请看后面内容
uploadArchives{
//本地仓库的一种
repositories{
mavenDeployer {
repository(
url: uri(
'../repo'))
}
}
}
group =
"com.lling.gradle.plugin"
//project属性
version =
"1.0"
//project属性
dependencies {
//导入Gradle的api,要写插件,肯定要使用Gradle的api
compile gradleApi()
compile localGroovy()
}
6.
AS右侧执行uploadArchives Task
7. 按上面步骤中build.gradle的写法,执行6后,我们会在本地生成一个repo目录
8. 在build.gradle中添加本地仓库地址,且在dependencies中配置classpath
buildscript {
repositories {
jcenter()
maven {
url uri(
'./repo')
}
}
dependencies {
classpath
'com.android.tools.build:gradle:2.3.3'
classpath
'com.lling.gradle.plugin:plugindemo:1.0'
// NOTE: Do not place your application dependencies here; they belong
// in the individual module build.gradle files
}
}
9.
在需要使用该插件工程的build.gradle中使用 apply plugin:”name”。
apply plugin:”XXX"
com.lling.gradlestudy.properties文件中
implementation-class=
com.lling.gradle.plugindemo.HelloPlugin
META-INF/gradle-plugins下面的文件的名字并不是随意的,其文件名去掉.properties就是 引用该插件时的id, 如上图中,我们想使用HelloPlugin插件时,在build.gralde这样引用
apply
plugin
:
‘com.lling.gradlestudy’ //id即为文件名去掉.properties