自己动手写一个插件
原文链接 https://jungletian.github.io/2015/12/06/%E8%87%AA%E5%B7%B1%E5%8A%A8%E6%89%8B%E5%86%99%E4%B8%80%E4%B8%AA%E6%8F%92%E4%BB%B6/
注:以下为加速网络访问所做的原文缓存,经过重新格式化,可能存在格式方面的问题,或偶有遗漏信息,请以原文为准。
如何自己写一个 gradle 插件
看谷歌的插件:com.android.application
和 com.android.databinding
:
apply plugin: 'com.android.application'
apply plugin: 'com.android.databinding'
他们都是一个 groovy
项目,那么接下来让我们来看看如何自己手动写一个插件:
创建一个普通的 groovy
工程(java 工程也没有关系),创建 src/main/groovy 目录,编写下面的代码:
package com.example.wecar.plugin
import org.gradle.api.Plugin
import org.gradle.api.internal.project.ProjectInternal
class GreetingPlugin implements Plugin<ProjectInternal> {
void apply(ProjectInternal project) {
project.task('hello') << {
println 'hello'
}
}
}
<!--more-->
在 src/main/resources 创建 META-INF/gradle-plugins 目录,创建 greetings.properties 文件:
implementation-class=com.example.wecar.plugin.GreetingPlugin
其中 greettings 就是你的插件 id。
build.gradle
group 'com.example.wecar.plugin'
version '1.1-SNAPSHOT'
buildscript {
repositories {
mavenLocal()
}
}
apply plugin: 'groovy'
apply plugin: 'java'
repositories {
mavenCentral()
}
sourceSets {
main {
groovy {
srcDirs = [
'src/main/groovy',
'src/main/java'
]
} // compile everything in src/ with groovy
java { srcDirs = []}// no source dirs for the java compiler
}
}
dependencies {
//tasks.withType(Compile) { options.encoding = "UTF-8" }
compile gradleApi()
}
// custom tasks for creating source jars
task sourcesJar(type: Jar, dependsOn:classes) {
classifier = 'sources'
from sourceSets.main.allSource
}
// add source jar tasks as artifacts
artifacts { archives sourcesJar }
// upload to local
uploadArchives {
repositories{
mavenLocal()
}
}
运行 uploadArchives 发布到本地仓库,那么就可以找到我们自己的插件了,由于当中没有指定 artifactId,那么我们的插件的 artifactId 就是我们的工程名称,比如这里是 deployplugin。
那么我们要怎么引入这个插件呢?
首先要再 buildScript 增加依赖:
buildscript {
repositories {
mavenLocal()
}
dependencies {
classpath 'com.example.wecar.plugin:deployplugin:1.1-SNAPSHOT'
}
}
然后:
apply plugin: 'greetings'
这样我们的 task “hello” 就被引入了。是不是很简单呢~