Uppgiftsegenskaper och konfiguration
Lär er lägga till egenskaper i anpassade uppgifter, konfigurera dem och säkerställa inkrementella byggen.
Uppgiftsegenskaper och konfiguration är en gratis lektion i Groovy och Gradle: JVM-automatisering och byggsystemutveckling på CoddyKit. Detta är lektion 3 av 4. Ni kan läsa hela lektionen gratis nedan och sedan öva praktiskt i webbläsaren med en inbyggd kodredigerare och en AI-handledare som är tillgänglig dygnet runt. Den ingår i lärvägen för Groovy och Gradle: JVM-automatisering och byggsystemutveckling, och Era framsteg synkroniseras mellan webben och CoddyKit-appen. Kursen i Groovy och Gradle: JVM-automatisering och byggsystemutveckling innehåller totalt 4 lektioner.
Vad är uppgiftsegenskaper?
Anpassade Gradle-uppgifter kan göras mycket flexibla genom att du lägger till egenskaper. Dessa egenskaper fungerar som variabler som låter dig konfigurera en uppgifts beteende från skriptet build.gradle.
Med egenskaper blir dina anpassade uppgifter återanvändbara och anpassningsbara till olika projektbehov, utan att du behöver ändra deras grundläggande logik.
Definiera enkla egenskaper
För att lägga till en egenskap i en anpassad uppgift deklarerar du helt enkelt ett publikt fält i uppgiftsklassen. För grundläggande typer som String, int eller boolean är detta enkelt.
För mer avancerade scenarier erbjuder Gradle även särskilda Property-typer, men vi börjar med enkla deklarationer.
Anpassad uppgift med en egenskap
Här är en enkel anpassad uppgift som definieras direkt i build.gradle. Den har egenskapen message, som skrivs ut när uppgiften körs. Observera standardvärdet som anges för egenskapen.
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)
Konfigurera uppgiftsegenskaper
När en uppgiftsegenskap har definierats kan du enkelt ange dess värde från filen build.gradle. Detta görs i uppgiftens konfigurationsblock, där du kan anpassa uppgiftsinstansen.
Kör exemplet för att se hur standardmeddelandet åsidosätts.
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!"
}
Indata för inkrementella byggen
En av Gradles mest kraftfulla funktioner är inkrementella byggen. Det innebär att Gradle kan hoppa över uppgifter om deras indata och utdata inte har ändrats sedan det senaste bygget, vilket sparar mycket tid.
För att aktivera detta måste du tala om för Gradle vilka egenskaper som räknas som indata för uppgiften. Det är egenskaper vars värden påverkar uppgiftens resultat.
Deklarera indataegenskaper
Du markerar en egenskap som indata med annoteringen @Input. Gradle spårar då dess värde. Om värdet ändras mellan byggen körs uppgiften. Om det inte ändras kan Gradle markera den som UP-TO-DATE och hoppa över den.
För indata i form av filer eller kataloger använder du @InputFile, @InputDirectory eller @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!"
}
Utdata för inkrementella byggen
Lika viktiga är utdata. Det är de filer eller kataloger som uppgiften skapar eller ändrar när den körs. Gradle spårar även dessa för att avgöra om en uppgift är aktuell.
Om en uppgifts indata inte har ändrats OCH de deklarerade utdatafilerna finns och är giltiga, vet Gradle att uppgiften inte behöver köras igen.
Deklarera utdataegenskaper
Du använder annoteringar som @OutputFile för en enskild resultatfil eller @OutputDirectory för en katalog som innehåller resultat. Dessa talar om för Gradle var uppgiftens genererade artefakter ska lagras.
Uppgiften ser till att den överordnade katalogen finns innan filen skrivs.
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")
}
Kraften i inkrementella byggen
Genom att deklarera både indata och utdata korrekt får du tillgång till Gradles kraftfulla funktion för inkrementella byggen. Det innebär att dina uppgifter bara körs när det behövs, vilket avsevärt minskar byggtiderna.
Denna optimering är avgörande för effektiva utvecklingsarbetsflöden och robusta CI/CD-pipelines, eftersom den ger snabb återkoppling och sparar resurser.
Snabb kontroll av egenskaper
Anta att du har en anpassad Gradle-uppgift som tar en specifik konfigurationsfil som indata. Vilken annotering skulle du använda för egenskapen som anger sökvägen till denna enda konfigurationsfil?
Sammanfattning: uppgiftsegenskaper och inkrementella byggen
I den här lektionen lärde du dig att lägga till egenskaper i anpassade uppgifter, så att de blir konfigurerbara och återanvändbara. Du upptäckte också hur egenskaper markeras som indata (till exempel @Input, @InputFile) och utdata (till exempel @OutputFile, @OutputDirectory).
Dessa annoteringar är avgörande för att aktivera Gradles kraftfulla funktion för inkrementella byggen, som avsevärt snabbar upp byggen genom att hoppa över uppgifter som redan är aktuella. Fortsätt öva för att bemästra effektiv uppgiftskonfiguration!
Lär dig Groovy med en AI-lärare – gratis
Skriv och kör riktig kod i webbläsaren, få omedelbar hjälp av en AI-lärare dygnet runt och fortsätt där du slutade – på webben eller i appen.
- Kurser
- 12
- Lektioner
- 48
Vanliga frågor
Är lektionen ”Uppgiftsegenskaper och konfiguration” gratis?
Ja – hela texten till ”Uppgiftsegenskaper och konfiguration” kan läsas gratis här på webben. Om Ni vill öva interaktivt med en inbyggd kodredigerare och en AI-handledare som är tillgänglig dygnet runt och låsa upp resten av kursen i Groovy och Gradle: JVM-automatisering och byggsystemutveckling, kan Ni uppgradera till CoddyKit PRO. Kursen i Groovy och Gradle: JVM-automatisering och byggsystemutveckling innehåller totalt 4 lektioner.
Vad lär jag mig i ”Uppgiftsegenskaper och konfiguration”?
Lär er lägga till egenskaper i anpassade uppgifter, konfigurera dem och säkerställa inkrementella byggen. Ni övar på Groovy och Gradle: JVM-automatisering och byggsystemutveckling med praktisk kod som körs direkt i webbläsaren, medan en AI-handledare som är tillgänglig dygnet runt svarar på Era frågor under lektionen.
Behöver jag någon erfarenhet för att börja lära mig Groovy och Gradle: JVM-automatisering och byggsystemutveckling?
Du behöver inga förkunskaper. Utbildningen i Groovy och Gradle: JVM-automatisering och byggsystemutveckling på CoddyKit är upplagd för allt från nybörjare till avancerade elever, så att du kan börja här eller från början och gå fram i din egen takt. Detta är lektion 3 av 4.
Hur lång tid tar lektionen ”Uppgiftsegenskaper och konfiguration”?
De flesta CoddyKit-lektioner tar cirka 5–10 minuter. Varje lektion är kort och interaktiv, så att du gör stadiga framsteg och kan fortsätta precis där du slutade – på webben eller i appen.
Kan jag skriva och köra kod i den här Groovy och Gradle: JVM-automatisering och byggsystemutveckling-lektionen?
Ja. Varje Groovy och Gradle: JVM-automatisering och byggsystemutveckling-lektion innehåller en inbyggd kodredigerare, så att du kan skriva och köra riktig kod direkt i webbläsaren och få omedelbar AI-feedback – utan lokal installation.
Alla lektioner i den här kursen
- Definiera anpassade uppgifter
- Uppgiftstyper och åtgärder
- Uppgiftsegenskaper och konfiguration
- Inkrementella uppgifter och kontroller av aktualitet