diff --git a/.gitignore b/.gitignore index 7f6823b..b27c0cb 100644 --- a/.gitignore +++ b/.gitignore @@ -1,2 +1,3 @@ .gradle +.idea build/ diff --git a/21-custom-task-in-one-file/build.gradle b/21-custom-task-in-one-file/build.gradle new file mode 100644 index 0000000..db771f3 --- /dev/null +++ b/21-custom-task-in-one-file/build.gradle @@ -0,0 +1,18 @@ +// Based on example: https://gradle.org/docs/current/userguide/custom_tasks.html + +// Use the default greeting +task hello(type: GreetingTask) + +// Customize the greeting +task greeting(type: GreetingTask) { + greeting = 'greetings from Brno' +} + +class GreetingTask extends DefaultTask { + String greeting = 'hello from Y Soft' + + @TaskAction + def greet() { + println greeting + } +} diff --git a/22-custom-task-in-buildSrc/build.gradle b/22-custom-task-in-buildSrc/build.gradle new file mode 100644 index 0000000..4eafe1a --- /dev/null +++ b/22-custom-task-in-buildSrc/build.gradle @@ -0,0 +1,10 @@ +apply plugin: 'groovy' + +import com.ysoft.greeting.GreetingTask + +task hello(type: GreetingTask) + +// Customize the greeting +task greeting(type: GreetingTask) { + greeting = 'greetings from Brno' +} \ No newline at end of file diff --git a/22-custom-task-in-buildSrc/buildSrc/src/main/groovy/com/ysoft/greeting/GreetingTask.groovy b/22-custom-task-in-buildSrc/buildSrc/src/main/groovy/com/ysoft/greeting/GreetingTask.groovy new file mode 100644 index 0000000..3a8e949 --- /dev/null +++ b/22-custom-task-in-buildSrc/buildSrc/src/main/groovy/com/ysoft/greeting/GreetingTask.groovy @@ -0,0 +1,13 @@ +package com.ysoft.greeting + +import org.gradle.api.DefaultTask +import org.gradle.api.tasks.TaskAction + +class GreetingTask extends DefaultTask { + String greeting = 'hello from Y Soft' + + @TaskAction + def greet() { + println greeting + } +} diff --git a/README.md b/README.md index e659fca..d85a4d0 100644 --- a/README.md +++ b/README.md @@ -227,3 +227,29 @@ Result is available at: http://localhost:8080/20-grails More information: https://github.com/grails/grails-gradle-plugin Video recording from Building Grails App With Gradle: http://youtu.be/FwZvDU2Jeh8 + + +## 21-custom-task-in-one-file + +Gradle has support for defining custom task classes. +Task class could be extended e.g. from DefaultTask. + +You can verify this sample by: + + gradle hello + gradle greeting + +## 22-custom-task-in-buildSrc + +In previous example we discussed how to add custom task. Storing many +custom tasks in one file makes it unreadable. It's possible to split logic into +Groovy classes. + +Create buildSrc directory with src/main/groovy. +Store here the class. It's necessary to add package name declaration and imports +from GradleAPI. + +Functionality is the same: + + gradle hello + gradle greeting \ No newline at end of file