Java > Java Build Tools > Gradle > Gradle Tasks and Plugins
Custom Gradle Task
This snippet demonstrates how to create a custom Gradle task to perform a specific action, such as printing a message to the console.
Defining a Custom Task
This code defines two simple tasks: `hello` and `greet`. The `doLast` block specifies the action to be performed when the task is executed. In this case, it prints a message to the console.
// build.gradle
task hello {
doLast {
println 'Hello, Gradle!'
}
}
task greet {
doLast {
println 'Greetings from the greet task!'
}
}
Running the Task
To run the task, open a terminal in the directory containing your `build.gradle` file and execute the following command: bash ./gradlew hello This will execute the `hello` task and print 'Hello, Gradle!' to the console. Similarly, running `./gradlew greet` executes the `greet` task.
Adding Dependencies Between Tasks
The `dependsOn` keyword creates a dependency between the `hello` and `intro` task, ensuring that the `intro` task executes before the `hello` task. Executing `./gradlew hello` will first print 'About to run hello task' and then 'Hello, Gradle!'
task intro {
doLast {
println 'About to run hello task'
}
}
task hello {
dependsOn intro
doLast {
println 'Hello, Gradle!'
}
}
task greet {
doLast {
println 'Greetings from the greet task!'
}
}
Real-Life Use Case
Custom tasks are extremely versatile. They can be used for tasks such as code generation, running static analysis tools, deploying applications, or creating custom build reports. For example, you might create a task to generate documentation from your source code using Javadoc, or a task to upload your application to a remote server.
Best Practices
Interview Tip
Be prepared to discuss how you've used custom Gradle tasks in previous projects. Explain the problems you solved and the benefits you achieved by using them. Understanding the `doLast` and `dependsOn` configurations will be a plus.
When to use them
Use custom Gradle tasks when you need to automate specific actions during your build process that are not already provided by existing plugins. For example, you can use a custom task to interact with external systems, perform custom code transformations, or generate configuration files.
Alternatives
Alternatives to custom Gradle tasks include using existing Gradle plugins, external scripts (e.g., shell scripts), or dedicated build tools like Ant or Maven. However, custom Gradle tasks offer the advantage of being tightly integrated with the Gradle build process, allowing for seamless automation and dependency management.
Pros
Cons
FAQ
-
What is the difference between `doLast` and `doFirst`?
`doLast` specifies an action to be performed after all other actions in the task have been executed, while `doFirst` specifies an action to be performed before any other actions. -
How can I pass parameters to a custom task?
You can define properties in your `build.gradle` file and access them within your task using the `project` object. Alternatively, you can use command-line arguments.