用idea新建一個工程
image.png
新建3個groovy文件
image.png
內(nèi)容分別是
這個類是插件的核心,文檔中定義到

image.png

image.png
意思就是:Plugin代表了一個功能的拓展。一個插件將一些配置應(yīng)用到一個目標(biāo)對象上。通常,這個目標(biāo)對象是一個項(xiàng)目,但是插件可以應(yīng)用于任何類型的對象。
其中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)建一個自定義的任務(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
}
對resources目錄進(jìn)行配置
image.png
其中pluginsrc.properties前面的pluginsrc可以換成其他合法名字,這個名稱的目的就是在目標(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'//不注釋這句,就會報(bào)錯
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)前工程的上一級的上一級目錄,這樣就生成了對應(yīng)的repo
引用插件
建立一個工程
對應(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要注意了。
這個和之前的一致
group='pluginDemo'
version='2.0.0'
這個是pluginsrc.properties前面的名字
apply plugin: 'pluginsrc'
這個是使用我們的插件
pluginsrc2{
message = 'hello gradle plugin'
}
當(dāng)引用成功后會有一個我們自定義的task

image.png
運(yùn)行就可以看到結(jié)果了

image.png



