Task-Eigenschaften und Konfiguration
Lernen Sie, benutzerdefinierten Tasks Eigenschaften hinzuzufügen, sie zu konfigurieren und inkrementelle Builds sicherzustellen.
Task-Eigenschaften und Konfiguration ist eine kostenlose Groovy & Gradle: JVM Automation and Build Engineering-Lektion auf CoddyKit. Dies ist Lektion 3 von 4. Du kannst die komplette Lektion unten kostenlos lesen – dann übst du sie direkt im Browser mit einem integrierten Code-Editor und einem KI-Tutor rund um die Uhr. Sie ist Teil des Groovy & Gradle: JVM Automation and Build Engineering-Lernpfads, und dein Fortschritt wird über Web und CoddyKit-App synchronisiert. Der Groovy & Gradle: JVM Automation and Build Engineering-Kurs umfasst insgesamt 4 Lektionen.
Teile dieser Lektion wurden noch nicht übersetzt und werden auf Englisch angezeigt.
What are Task Properties?
Custom Gradle tasks can be made highly flexible by adding properties. These properties act like variables that allow you to configure a task's behavior from your build.gradle script.
Using properties makes your custom tasks reusable and adaptable to different project needs without having to change their core logic.
Defining Simple Properties
To add a property to a custom task, you simply declare a public field within your task class. For basic types like String, int, or boolean, this is straightforward.
For more advanced scenarios, Gradle also offers dedicated Property types, but we'll start with simple declarations.
Custom Task with a Property
Here's a basic custom task defined directly in build.gradle. It has a message property that will be printed when the task runs. Notice the default value set for the property.
import org.gradle.api.DefaultTask
import org.gradle.api.tasks.TaskAction
class MyMessageTask extends DefaultTask {
String message = "Default task message"
@TaskAction
void printMessage() {
println "Task says: ${message}"
}
}
task helloWorld(type: MyMessageTask)
Configuring Task Properties
Once a task property is defined, you can easily set its value from your build.gradle file. This is done within the task's configuration block, which allows you to customize the task instance.
Run the example to see how the default message is overridden.
import org.gradle.api.DefaultTask
import org.gradle.api.tasks.TaskAction
class MyMessageTask extends DefaultTask {
String message = "Default task message"
@TaskAction
void printMessage() {
println "Task says: ${message}"
}
}
task helloWorld(type: MyMessageTask) {
message = "Hello from CoddyKit!"
}
Inputs for Incremental Builds
One of Gradle's most powerful features is incremental builds. This means Gradle can skip tasks if their inputs and outputs haven't changed since the last build, saving a lot of time.
To enable this, you must tell Gradle which properties are considered task inputs. These are properties whose values influence the task's outcome.
Declaring Input Properties
You mark a property as an input using the @Input annotation. Gradle will then track its value. If the value changes between builds, the task will execute. If not, Gradle can mark it as UP-TO-DATE and skip it.
For file or directory inputs, use @InputFile, @InputDirectory, or @InputFiles.
import org.gradle.api.DefaultTask
import org.gradle.api.tasks.Input
import org.gradle.api.tasks.TaskAction
class MyInputTask extends DefaultTask {
@Input
String greeting = "Hola!"
@TaskAction
void greet() {
println "Greeting: ${greeting}"
}
}
task sayHello(type: MyInputTask) {
greeting = "Bonjour!"
}
Outputs for Incremental Builds
Equally important are outputs. These are the files or directories that your task creates or modifies during its execution. Gradle also tracks these to determine if a task is up-to-date.
If a task's inputs haven't changed AND its declared outputs are present and valid, Gradle knows the task doesn't need to run again.
Declaring Output Properties
You use annotations like @OutputFile for a single result file or @OutputDirectory for a directory containing results. These tell Gradle where the task's generated artifacts will be stored.
The task will ensure the parent directory exists before writing the file.
import org.gradle.api.DefaultTask
import org.gradle.api.tasks.Input
import org.gradle.api.tasks.OutputFile
import org.gradle.api.tasks.TaskAction
class MyOutputFileTask extends DefaultTask {
@Input
String content = "Default report content."
@OutputFile
File outputFile = project.file("build/reports/output.txt")
@TaskAction
void generateFile() {
outputFile.parentFile.mkdirs()
outputFile.write(content)
println "Generated: ${outputFile.name}"
}
}
task generateReport(type: MyOutputFileTask) {
content = "Report data for: " + new Date().format("yyyy-MM-dd HH:mm:ss")
}
The Power of Incremental Builds
By correctly declaring both inputs and outputs, you unlock Gradle's powerful incremental build feature. This means your tasks only run when necessary, drastically speeding up build times.
This optimization is crucial for efficient development workflows and robust CI/CD pipelines, ensuring quick feedback and resource savings.
Quick Check on Properties
Imagine you have a custom Gradle task that takes a specific configuration file as an input. Which annotation would you use for the property that defines the path to this single configuration file?
Recap: Task Properties & Incremental Builds
In this lesson, you learned how to add properties to custom tasks, making them configurable and reusable. You also discovered how to mark properties as inputs (e.g., @Input, @InputFile) and outputs (e.g., @OutputFile, @OutputDirectory).
These annotations are key to enabling Gradle's powerful incremental build feature, which significantly speeds up your builds by skipping tasks that are already up-to-date. Keep practicing to master efficient task configuration!
Häufig gestellte Fragen
Ist die Lektion „Task-Eigenschaften und Konfiguration“ kostenlos?
Ja — der vollständige Text von „Task-Eigenschaften und Konfiguration“ ist hier im Web kostenlos zu lesen. Um sie interaktiv zu üben (integrierter Code-Editor und 24/7 KI-Tutor) und den Rest des Groovy & Gradle: JVM Automation and Build Engineering-Kurses freizuschalten, upgrade auf CoddyKit PRO. Der Groovy & Gradle: JVM Automation and Build Engineering-Kurs umfasst insgesamt 4 Lektionen.
Was lerne ich in „Task-Eigenschaften und Konfiguration“?
Lernen Sie, benutzerdefinierten Tasks Eigenschaften hinzuzufügen, sie zu konfigurieren und inkrementelle Builds sicherzustellen. Du übst Groovy & Gradle: JVM Automation and Build Engineering mit praktischem Code, den du direkt im Browser ausführst, und ein 24/7 KI-Tutor beantwortet deine Fragen während du die Lektion bearbeitest.
Brauche ich Erfahrung, um Groovy & Gradle: JVM Automation and Build Engineering zu starten?
Keine Vorkenntnisse erforderlich. Groovy & Gradle: JVM Automation and Build Engineering auf CoddyKit ist für Anfänger bis fortgeschrittene Lernende strukturiert, sodass du hier starten oder von Anfang an beginnen und in deinem eigenen Tempo voranschreiten kannst. Dies ist Lektion 3 von 4.
Wie lange dauert die Lektion „Task-Eigenschaften und Konfiguration“?
Die meisten CoddyKit-Lektionen dauern etwa 5–10 Minuten. Jede ist kompakt und interaktiv, sodass du stetig Fortschritte machst und genau dort weitermachst, wo du aufgehört hast – im Web und in der App.
Kann ich in dieser Groovy & Gradle: JVM Automation and Build Engineering-Lektion Code schreiben und ausführen?
Ja. Jede Groovy & Gradle: JVM Automation and Build Engineering-Lektion enthält einen integrierten Code-Editor, sodass du echten Code direkt in deinem Browser schreibst und ausführst und sofort KI-Feedback erhältst — ohne lokale Einrichtung erforderlich.
Alle Lektionen in diesem Kurs
- Benutzerdefinierte Tasks definieren
- Task-Typen und Aktionen
- Task-Eigenschaften und Konfiguration
- Inkrementelle Tasks und Up-to-Date-Prüfungen