1 实现
新建模块 myplugin
两个文件,一个继承 Plugin,使我们要用的插件;一个作为 Model,用来保存一些数据
- myplugin/src/main/groovy/me/lynch/test/HelloPlugin.groovy
- myplugin/src/main/groovy/me/lynch/test/HelloPluginExtensition.groovy
其中 HelloPlugin 中定义了一个新的任务
package me.lynch.test
import org.gradle.api.Plugin
import org.gradle.api.Project
class HelloPlugin implements Plugin<Project>{
@Override
void apply(Project project) {
project.extensions.create("data", HelloPluginExtension)
project.task('helloworld') << {
println 'data:'
println project.data.key
println project.data.value
}
}
}
创建属性文件
- myplugin/src/main/resources/META-INF/gradle-plugins/helloplugin.properties
这个 “helloplugin” 就是后面会使用的插件的名字,所以属性文件为 “插件名字.properties”
注意:该属性文件路径一定要正确,否则即使编译过了也用不了
文件的内部指定了该插件的具体实现类
implementation-class=me.lynch.test.HelloPlugin
然后在 build.gradle 添加编译的依赖,主要对 Gradle 的 API 和 Groovy 标准库的依赖;因为是 Groovy 实现,还需要加 groovy
插件
apply plugin: 'groovy'
dependencies {
compile gradleApi()
compile localGroovy()
}
2 发布
这里放到本地目录
在 build.gradle 添加编辑信息
group = 'me.lynch.test'
version = '1.0-SNAPSHOT'
uploadArchives {
repositories {
mavenDeployer {
repository(url: uri('../repo'))
}
}
}
调用 gradle uploadArchives
发布
3 使用
指明仓库地址,再 apply 来应用插件
buildscript {
repositories {
maven {
url uri("../repo")
}
}
dependencies {
classpath 'me.lynch.test:myplugin:1.6-SNAPSHOT'
}
}
apply plugin: 'com.android.application'
apply plugin: 'helloplugin'
data {
key = "1"
value = "2"
}
然后使用 gradle tasks
列出任务列表,可以看到有 helloworld 任务
调用 gradle helloworld
可以看到输出
网友评论