gradle插件Java_java基础—->自定义gradle的插件

这里面简单的介绍一下gradle插件的编写。

自定义gradle插件

我们编写的gradle脚本一般是放在build.gradle文件中。所以首先创建一下build.gradle文件,下面的例子都是在此文件中。

一、简单的gradle插件

class GreetingPlugin implements Plugin {

void apply(Project project) {

project.task('hello') {

doLast {

println 'Hello from the GreetingPlugin'

}

}

}

}

apply plugin: GreetingPlugin

运行结果:

aa42d7a1bb1addedc9582c8beb644a92.png

二、 编写可配置的插件

class GreetingPluginExtension {

String message

String greeter

}

class GreetingPlugin implements Plugin {

void apply(Project project) {

def extension = project.extensions.create('greeting', GreetingPluginExtension)

project.task('hello') {

doLast {

println "${extension.message} from ${extension.greeter}"

}

}

}

}

apply plugin: GreetingPlugin

greeting {

message = 'Hello'

greeter = 'huhx'

}

运行结果:

f809577821b36185a0ff47f490b32f5b.png

三、编写与文件交互的插件

class GreetingToFileTask extends DefaultTask {

def destination

File getDestination() {

project.file(destination)

}

@TaskAction

def greet() {

def file = getDestination()

file.parentFile.mkdirs()

file.write 'Hello!'

}

}

task greet(type: GreetingToFileTask) {

destination = { project.greetingFile }

}

task sayGreeting(dependsOn: greet) {

doLast {

println file(greetingFile).text

}

}

ext.greetingFile = "$buildDir/hello.txt"

运行结果:并且在2018-12-28/build目录下面生成一个hello.txt,里面的内容是Hello。

01a64ec22492017f3d827adc991f9741.png

四、编写带有拓展功能的插件

class GreetingPlugin implements Plugin {

void apply(Project project) {

def extension = project.extensions.create('greeting', GreetingPluginExtension, project)

project.tasks.create('hello', Greeting) {

message = extension.message

outputFiles = extension.outputFiles

}

}

}

class GreetingPluginExtension {

final Property message

final ConfigurableFileCollection outputFiles

GreetingPluginExtension(Project project) {

message = project.objects.property(String)

message.set('Hello from GreetingPlugin')

outputFiles = project.layout.configurableFiles()

}

void setOutputFiles(FileCollection outputFiles) {

this.outputFiles.setFrom(outputFiles)

}

}

class Greeting extends DefaultTask {

final Property message = project.objects.property(String)

final ConfigurableFileCollection outputFiles = project.layout.configurableFiles()

void setOutputFiles(FileCollection outputFiles) {

this.outputFiles.setFrom(outputFiles)

}

@TaskAction

void printMessage() {

outputFiles.each {

logger.quiet "Writing message 'Hi from Gradle' to file"

it.text = message.get()

}

}

}

apply plugin: GreetingPlugin

greeting {

message = 'Hi from Gradle'

outputFiles = layout.files('a.txt', 'b.txt')

}

运行结果:并且在2018-12-28目录下面生成a.txt和b.txt,文件的内容均为:Hi from Gradle

212c935d0488f4bc47040475d566261c.png

友情链接

https://www.cnblogs.com/huhx/tag/java/default.html

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值