用idea新建一個(gè)工程
image.png
新建3個(gè)groovy文件
image.png
內(nèi)容分別是
這個(gè)類是插件的核心,文檔中定義到
image.png
image.png
意思就是:Plugin代表了一個(gè)功能的拓展倒槐。一個(gè)插件將一些配置應(yīng)用到一個(gè)目標(biāo)對(duì)象上。通常鹰霍,這個(gè)目標(biāo)對(duì)象是一個(gè)項(xiàng)目豹休,但是插件可以應(yīng)用于任何類型的對(duì)象镜沽。
其中apply方法就是將該插件應(yīng)用到指定project
package com.xys
import com.xys.task.DevWikiTask
import org.gradle.api.Plugin
import org.gradle.api.Project
class MainPluginForBuildSrc implements Plugin<Project> {
@Override
void apply(Project project) {
//配置過后可以在目標(biāo)project中通過pluginsrc進(jìn)行一些配置
project.extensions.create('pluginsrc', MyExtension)
//創(chuàng)建一個(gè)自定義的任務(wù)
project.tasks.create("devwikitask",DevWikiTask)
project.task('hahahaha') << {
println project.pluginsrc.message
}
}
}
package com.xys.task
import org.gradle.api.DefaultTask
import org.gradle.api.tasks.TaskAction
class DevWikiTask extends DefaultTask{
DevWikiTask() {
group = 'devwiki'
description = 'devwiki first task'
}
@TaskAction
def devwiki() {
println "devwiki plugin: Hello World!"
}
}
package com.xys
class MyExtension {
String message
}
對(duì)resources目錄進(jìn)行配置
image.png
其中pluginsrc.properties前面的pluginsrc可以換成其他合法名字敏晤,這個(gè)名稱的目的就是在目標(biāo)工程中引用比如apply plugin: 'pluginsrc'
配置build.gradle文件
apply plugin: 'groovy'
apply plugin: 'maven'
//sourceCompatibility = 1.8
dependencies {
compile gradleApi()
compile localGroovy()
// compile 'org.codehaus.groovy:groovy-all:2.3.11'//不注釋這句,就會(huì)報(bào)錯(cuò)
testCompile group: 'junit', name: 'junit', version: '4.12'
}
repositories {
mavenCentral()
}
group='pluginDemo'
version='2.0.0'
uploadArchives {
repositories {
mavenDeployer {
repository(url: uri('../../repo'))
}
}
}
我們通過maven在本地生成了repo目錄
路徑是當(dāng)前工程的上一級(jí)的上一級(jí)目錄缅茉,這樣就生成了對(duì)應(yīng)的repo
引用插件
建立一個(gè)工程
對(duì)應(yīng)的build.gradle為
group 'testplugin'
version '1.0-SNAPSHOT'
apply plugin: 'groovy'
apply plugin: 'java'
apply plugin: 'pluginsrc'
sourceCompatibility = 1.8
dependencies {
// compile 'org.codehaus.groovy:groovy-all:2.3.11'
testCompile group: 'junit', name: 'junit', version: '4.12'
}
buildscript {
repositories {
maven {
url uri('../../../repo')
}
}
dependencies {
classpath 'pluginDemo:pluginDemo:2.0.0'
}
}
pluginsrc2{
message = 'hello gradle plugin'
}
其中注意嘴脾,maven 中的目錄要一致,下面的classpath要注意了。
這個(gè)和之前的一致
group='pluginDemo'
version='2.0.0'
這個(gè)是pluginsrc.properties前面的名字
apply plugin: 'pluginsrc'
這個(gè)是使用我們的插件
pluginsrc2{
message = 'hello gradle plugin'
}
當(dāng)引用成功后會(huì)有一個(gè)我們自定義的task
image.png
運(yùn)行就可以看到結(jié)果了
image.png