使用Android Studio开发gradle插件
创建插件
在Android studio中不能直接创建gradle plugin,所以我们创建一个library,并对其进行修改。
gradle插件是基于groovy来进行开发的,所以我们需要将我们的module改造成一个groovy项目。
创建完成之后,删除module里边的文件,只保留src/main和build.gradle文件。
然后在main文件夹下添加groovy目录和resources目录,groovy目录用来保存插件内容,resources目录用来声明plugin类,让gradle识别我们写好的插件。
- 在groovy目录下根据我们自己的需求新建一个包名,然后在该包名下边新建groovy文件,通过new->file-> xxx.groovy,新建groovy文件,注意一定要加上后缀名。
- 在resources目录下新建META-INF/gradle-plugins目录,然后在目录中创建properties文件,注意:该文件你可以随意取名,后续我们在其他地方使用这个插件的时候,会用到这个名称。
例如我们在项目的gradle文件中使用一个gradle插件,apply plugin: 'xxx' 这里的xxx就是这个文件的名字
。然后在文件中指明你要声明的插件类,例如刚才你声明的groovy文件implementation-class=com.gitzzp.eplugin.PluginOne
- 修改build.gradle文件,删除build.gradle文件中的所有内容,替换为
apply plugin: 'groovy' apply plugin: 'maven' dependencies { implementation gradleApi() //gradle sdk implementation localGroovy() //groovy sdk } repositories { jcenter() }
- 编写groovy文件
package com.gitzzp.eplugin import org.gradle.api.Plugin import org.gradle.api.Project public class PluginOne implements Plugin<Project> { @Override void apply(Project target) { println("hello gradle plugin!") } }
- 这时我们就做好了一个最简单的gradle plugin插件,此时你的目录应该是:
打包到本地maven
1.在build.gradle文件中添加如下代码
uploadArchives {
repositories.mavenDeployer {
repository(url: uri('')) //仓库的路径 自行定义
pom.groupId = 'com.gitzzp.eplugin' //自行定义,一般是包名
pom.artifactId = 'eplugin' //自行定义
pom.version = '1.0.0' //版本号 自行定义
}
}
这里定义的内容决定了我们在项目中的buid.gradle文件中的引用名称,例如
buildscript {
repositories {
google()
jcenter()
maven{
url '' //这里是上边填写的仓库路径
}
}
dependencies {
classpath "com.android.tools.build:gradle:4.0.1"
//这些是上边定义的groupId及artifactId和版本号
classpath 'com.gitzzp.eplugin:eplugin:1.0.0'
}
}
添加好代码之后gradle一下,然后点击AndroidStudio右侧的gradle工具,可以看到我们添加的task:
双击执行task后,我们编写的插件就打包到本地仓库了,我们就可以在项目中使用我们的插件。
使用
在项目的build.gradle文件中设置
在需要引用的module的build.gradle文件中引用
然后执行gradle命令,我们就会在命令行中看到我们编写插件的输出