用idea新建一个工程
image.png
新建3个groovy文件
image.png
内容分别是
这个类是插件的核心,文档中定义到
![](https://img.haomeiwen.com/i4973864/5c580b0807f984a7.png)
![](https://img.haomeiwen.com/i4973864/5bdb2846e1b42d84.png)
意思就是:Plugin代表了一个功能的拓展。一个插件将一些配置应用到一个目标对象上。通常,这个目标对象是一个项目,但是插件可以应用于任何类型的对象。
其中apply方法就是将该插件应用到指定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) {
//配置过后可以在目标project中通过pluginsrc进行一些配置
project.extensions.create('pluginsrc', MyExtension)
//创建一个自定义的任务
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目录进行配置
image.png
其中pluginsrc.properties前面的pluginsrc可以换成其他合法名字,这个名称的目的就是在目标工程中引用比如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'//不注释这句,就会报错
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目录
路径是当前工程的上一级的上一级目录,这样就生成了对应的repo
引用插件
建立一个工程
![]()
对应的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'
}
当引用成功后会有一个我们自定义的task
![](https://img.haomeiwen.com/i4973864/f7553c935d65723a.png)
运行就可以看到结果了
![](https://img.haomeiwen.com/i4973864/01c5588055612c02.png)
网友评论