自定义Gradle插件的方式
Gradle是采用Groovy语言,编写Gradle插件主要有三种方法
-
build.gradle脚本中直接使用。这种方式就是直接在Android Studioapp moudle的build.gradle 中进行插件的编写,优点就是不用再上传插件到maven或者其它地方,项目就可以直接使用;缺点也是很明显,就是只能在自己的项目中使用,不能复用,这个不是我们今天要说的。
-
buildSrc中使用。这种方式需要在项目中新建一个model命名为buildSrc,这个目录就用来存放自定义插件。然后在src/main中建立两个目录,一个就是存放代码的groovy目录,一个是存放自定义插件名称的resources目录。这种定义方式也是只能在我们项目中进行使用,不好复用。我们今天要分享的是最灵活的方式,也就是第三点。
-
独立Module中使用。这种方式就是完全独立开发一个Module,可以随便用。
独立Module方式
步骤:
1、新建module
module名字别乱取,这个是后面用作artifactId,artifactId是什么,熟悉maven的应该都知道吧,这是maven引用的标准格式:
2、删除src目录下除了main的所有文件,删除main下所有文件及文件夹。最终保留的是src/main的空文件夹
3、修改build.gradle文件
删除全部内容,修改为:
apply plugin: 'groovy'
apply plugin: 'maven'
dependencies {
//gradle sdk
implementation gradleApi()
//groovy sdk
implementation localGroovy()
}
repositories {
mavenCentral()
}
4、在main路径下新建名为 groovy 的包,再新建自定义包名,如:com.demo.custom,在此路径下新建 .groovy 文件,如:CustomPlugin.groovy
package com.demo.custom
import org.gradle.api.Plugin
import org.gradle.api.Project
public class CustomPlugin implements Plugin<Project> {
void apply(Project project) {
System.out.println("========================");
System.out.println("hello gradle plugin!");
System.out.println("========================");
}
}
5、在main路径下新建 reources/META-INF/gradle-plugins目录。并在此目录下新建一个 .properties文件。命名可自定义,但这个命名将作为后期引用插件地方的名称。例如命名为:com.demo.custom.properties。在app的build.gradle中使用为:apply plugin: ‘com.demo.custom’。
6、我们知道引用插件还需要 classpath 。即插件需要打包到maven仓库。所以需要在此module的build.gradle中新增:
//group和version在后面使用自定义插件的时候会用到
group='com.demo.custom'
version='1.0.0'
uploadArchives {
repositories {
mavenDeployer {
//提交到远程服务器:
// repository(url: "http://www.xxx.com/repos") {
// authentication(userName: "admin", password: "admin")
// }
//本地的Maven地址设置为 ../repos
repository(url: uri('../repos'))
}
}
}
7、同步一下,点击右上角的Gradle,找到task中的upload选项,并且双击uploadArchives:
在刚才配置的项目根目录下就会自动生成 repos 文件夹:
8、使用:
buildSrc方式
前面我们讲了如何自定义gradle插件并且打包出去,可能步骤比较多。有时候,你可能并不需要打包出去,只是在这一个项目中使用而已,那么你无需打包这个过程。
只是针对当前项目开发的Gradle插件相对较简单。步骤之前所提到的很类似,只是有几点需要注意:
- 新建的Module名称必须为BuildSrc
- 无需resources目录