创建自定义的gradle 插件
一、 创建Android Library
gradle 就是groovy 语言编写的
1.1 main 文件夹下创建groovy文件夹
除了src下的main目录和build.gradle 其他的都可以删了
1.2 创建groovy 文件
groovy 文件实现Plugin接口,并且实现apply()方法
package kpa.custom.plugin
import org.gradle.api.Plugin
import org.gradle.api.Project
public class CustomLogPlugin implements Plugin<Project> {
void apply(Project project) {
System.out.println("======CustomLogPlugin===")
}
}
1.3 修改Library的build.gradle
apply plugin: 'groovy'
apply plugin: 'maven'
dependencies {
implementation fileTree(dir: 'libs', includes: ['*.jar'])
implementation gradleApi()
implementation localGroovy()
implementation 'com.android.tools.build:gradle:3.6.1'
}
group='danny.lifecycle.plugin'
version='1.0.0'
uploadArchives {
repositories {
mavenDeployer {
//部署地址可以自己设置,既可以在本地,也可以在远程,这里设置为本地(项目根目录下的)
repository(url: uri('../custom_log_repo'))
}
}
}
1.4 main文件夹下创建resources/META-INF/gradle-plugins路径, 创建properties文件, 命名格式:插件名称.peoperties
// 自定义日志插件(当然 名称自己随便定义啊)
custom.log.plugin.properties
1.5 编译
- sync now 一下
- 在右侧点击执行 gradle/tasks/upload/uploadArchives
可以看到在根目录下有一个custom_log_repo 文件,里面的就是我们插件的目标文件
1.6 测试
在app 的build.gradle 中引入我们自己的插件
....
// properties 的文件名
apply plugin: 'custom.log.plugin'
buildscript {
repositories {
google()
jcenter()
// 根目录下的地址
maven { url '../custom_log_repo'}
}
dependencies {
//group 值 + module 名 + version
classpath 'kpa.custom.log.plugin:custom.log.plugin:1.0.0'
}
}
android {
...
}
...
执行 ./gradlew clean assembkedebug 构建当前gradle
CompileThePlugPile ./gradlew clean assembledebug
> Configure project :app
//此处便是我们插件中的打印
======CustomLogPlugin===
BUILD SUCCESSFUL in 24s
27 actionable tasks: 25 executed, 2 up-to-date
到此为止,完成了gradle 的自定义