Gradle插件是一组任务,几乎所有的任务,如编译任务,设置域对象,设置源文件等都由插件处理
编写Gradle插件
创建一个模块(假设模块名叫
library
),清空除build.gradle以外的文件,清空build.gradle的内容新建src文件夹,在src下新建main文件夹,在main下新建groovy和resources文件夹
groovy下新建包名文件夹,在里面创建类,创建一个
PluginImpl.groovy
1
2
3
4
5
6
7
8
9
10
11package com.github.lakeshire
import org.gradle.api.Plugin
import org.gradle.api.Project
public class PluginImpl implements Plugin<Project> {
void apply(Project project) {
project.task('TestTask') {
}
}
}resources下创建META-INF文件夹,META-INF下创建gradle-plugins文件夹,gradle-plugins下新建属性文件,文件命名就是插件的名字,如
plugin.test.properties
1
implementation-class=com.github.lakeshire.PluginImpl
这样就创建了一个叫
plugin.test
的插件,插件里有一个TestTask
任务发布到本地仓库
1
2
3
4
5
6
7
8
9
10
11
12
13repositories {
mavenCentral()
}
group='com.github.lakeshire'
version='1.0.0'
uploadArchives {
repositories {
mavenDeployer {
repository(url : uri('../repo'))
}
}
}Sync之后会出现一个
uploadArchives
任务,运行就在repo
目录下出现我们的插件使用插件,在使用到的
gradle.build
中加入1
2
3
4
5
6
7
8
9
10
11
12
13buildscript {
repositories {
maven {
url uri('../repo')
}
}
dependencies {
classpath 'com.github.lakeshire:library:1.0.0'
}
}
// 就是模块名
apply plugin: 'library'