这里面简单的介绍一下gradle插件的编写。
我们编写的gradle脚本一般是放在build.gradle文件中。所以首先创建一下build.gradle文件,下面的例子都是在此文件中。
class GreetingPlugin implements Plugin<Project> { void apply(Project project) { project.task(‘hello‘) { doLast { println ‘Hello from the GreetingPlugin‘ } } } } apply plugin: GreetingPlugin
运行结果:
class GreetingPluginExtension { String message String greeter } class GreetingPlugin implements Plugin<Project> { 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‘ }
运行结果:
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。
class GreetingPlugin implements Plugin<Project> { 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<String> 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<String> 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
原文:https://www.cnblogs.com/huhx/p/baseusejavacustomgradleplugin.html