Konvensjonsplugins og byggelogikk
Utvikle og bruk konvensjonsplugins for å håndheve konsekvente byggekonfigurasjoner og standarder i organisasjonen Deres.
Konvensjonsplugins og byggelogikk er en gratis leksjon i Groovy og Gradle: JVM-automatisering og byggeutvikling på CoddyKit. Dette er leksjon 3 av 4. Du kan lese hele leksjonen gratis nedenfor – og deretter øve praktisk i nettleseren med en innebygd kodeeditor og en AI-veileder som er tilgjengelig døgnet rundt. Den er en del av læringsløpet i Groovy og Gradle: JVM-automatisering og byggeutvikling, og fremdriften din synkroniseres mellom nettet og CoddyKit-appen. Kurset i Groovy og Gradle: JVM-automatisering og byggeutvikling inneholder totalt 4 leksjoner.
Hva er konvensjonsplugins?
I store Gradle-bygg med flere prosjekter kan det bli utfordrende å vedlikeholde ensartede konfigurasjoner på tvers av mange delprosjekter. Det er her konvensjonsplugins kommer til nytte.
En konvensjonsplugin er i praksis en måte å pakke inn og gjenbruke vanlig byggelogikk og konfigurasjon som er spesifikk for organisasjonen eller prosjektet Deres. De bidrar til å håndheve standarder og redusere boilerplate.
Problemet: Uensartet byggelogikk
Se for Dem at De har flere Java-delprosjekter. Hvert av dem må bruke java-library-pluginen, angi en bestemt Java-verktøykjede og konfigurere felles repositories. Uten konvensjonsplugins kan De ende opp med gjentatte og litt ulike konfigurasjoner i hver build.gradle-fil.
/* project-a/build.gradle */
plugins {
id 'java-library'
}
java {
toolchain {
languageVersion = JavaLanguageVersion.of(17)
}
}
repositories {
mavenCentral()
}
/* project-b/build.gradle */
plugins {
id 'java-library'
}
java {
toolchain {
languageVersion = JavaLanguageVersion.of(17)
}
}
repositories {
mavenCentral()
}Sentralisering av byggelogikk med `buildSrc`
For å løse problemet med gjentakelser tilbyr Gradle en spesiell katalog: buildSrc. Når den finnes i prosjektroten, kompilerer Gradle automatisk all kode (Groovy, Kotlin, Java) som finnes i buildSrc, og legger den til i classpath-en til byggskriptene.
Dette gjør buildSrc til et perfekt sted for å definere intern byggelogikk, egendefinerte tasks og særlig konvensjonsplugins.
Lag Deres første konvensjonsplugin
La oss lage en enkel konvensjonsplugin for å standardisere oppsettet av Java-biblioteket vårt. Vi definerer den i buildSrc/src/main/groovy/my.java-conventions.groovy. Denne pluginen bruker java-library-pluginen, angir Java 17 som verktøykjede og legger til mavenCentral().
// buildSrc/src/main/groovy/my.java-conventions.groovy
plugins {
id 'java-library'
}
java {
toolchain {
languageVersion = JavaLanguageVersion.of(17)
}
}
repositories {
mavenCentral()
}Bruk av konvensjonspluginen
Når De har definert konvensjonspluginen i buildSrc, kan De bruke den i build.gradle-filen til et hvilket som helst delprosjekt ved hjelp av ID-en. Legg merke til hvor mye ryddigere og mer konsis byggfilen til delprosjektet blir!
// subproject-a/build.gradle
plugins {
id 'my.java-conventions'
}
// All Java library, Java 17, and Maven Central settings
// are now applied automatically by the convention plugin!Utvidelse av konvensjoner: Avhengigheter og tester
Konvensjonsplugins kan gjøre langt mer enn bare grunnleggende innstillinger. De kan håndheve felles avhengigheter, konfigurere testrammeverk eller standardisere andre deler av bygget. Her legger vi til JUnit Jupiter-avhengigheter og en felles konfigurasjon for testlogging.
// buildSrc/src/main/groovy/my.java-conventions.groovy (updated)
plugins {
id 'java-library'
}
// ... (previous Java toolchain and repositories config)
dependencies {
testImplementation platform('org.junit:junit-bom:5.10.0')
testImplementation 'org.junit.jupiter:junit-jupiter'
}
test {
useJUnitPlatform()
testLogging {
events "passed", "skipped", "failed"
}
}Konvensjonsplugins med Kotlin DSL
Akkurat som vanlige byggskript kan konvensjonsplugins også skrives med Kotlin DSL (.gradle.kts-filer). Dette gir typesikkerhet ved kompilering og bedre IDE-støtte, noe som kan være svært verdifullt for kompleks byggelogikk.
Strukturen er fortsatt lik, men syntaksen er Kotlin.
// buildSrc/src/main/kotlin/my.kotlin-conventions.gradle.kts
plugins {
java
}
java {
toolchain {
languageVersion = JavaLanguageVersion.of(21)
}
}
repositories {
mavenCentral()
}Bruk på rotprosjektet
Selv om konvensjonsplugins ofte brukes for delprosjekter, kan de også brukes i rotprosjektets build.gradle. Dette er nyttig for å definere egenskaper eller konfigurasjoner som skal gjelde for hele bygget, for eksempel felles versjoner av avhengigheter.
// build.gradle (root project)
plugins {
id 'my.root-conventions'
}
// buildSrc/src/main/groovy/my.root-conventions.groovy
ext {
// Define properties accessible throughout the build
springBootVersion = '3.2.0'
kotlinVersion = '1.9.0'
}Fordeler og beste praksis
Konvensjonsplugins er en grunnpilar i vedlikeholdbare Gradle-bygg i stor skala:
- Konsistens: Sikrer at alle prosjekter følger organisasjonens standarder.
- Mindre duplisering: Sentraliserer felles byggelogikk og eliminerer kopiering og innliming.
- Enklere vedlikehold: Oppdater standardene på ett sted, så får alle prosjektene umiddelbart nytte av det.
- Bedre lesbarhet: Byggfiler for delprosjekter blir kortere og mer fokuserte på prosjekttilpassede detaljer.
Når De oppretter dem, bør De holde pluginene fokusert på ett enkelt ansvarsområde, bruke tydelige ID-er og benytte Kotlin DSL for typesikkerhet.
Kontrollpunkt for konvensjoner
Konvensjonsplugins er en effektiv måte å standardisere byggelogikk og håndheve organisatoriske standarder på. La oss teste forståelsen Deres.
Oppsummering: Mestre konvensjonsplugins
De har nå lært om Gradle-konvensjonsplugins! De er et viktig verktøy for håndtering av komplekse bygg med flere prosjekter.
- Konvensjonsplugins sentraliserer felles byggelogikk.
- De defineres vanligvis i katalogen
buildSrc. - De bidrar til ensartede konfigurasjoner (Java-versjoner, avhengigheter og testoppsett).
- De reduserer boilerplate betydelig og gjør vedlikehold enklere.
Ved å bruke konvensjonsplugins kan De bygge mer robuste og skalerbare Gradle-prosjekter.
Lær deg Groovy med en AI-veileder – gratis
Skriv og kjør ekte kode i nettleseren, få umiddelbar hjelp fra en AI-veileder som er tilgjengelig døgnet rundt, og fortsett der du slapp – på nettet eller i appen.
- Kurs
- 12
- Leksjoner
- 48
Ofte stilte spørsmål
Er leksjonen «Konvensjonsplugins og byggelogikk» gratis?
Ja – hele teksten i «Konvensjonsplugins og byggelogikk» er gratis å lese her på nettet. For å øve interaktivt med en innebygd kodeeditor og en AI-veileder som er tilgjengelig døgnet rundt, og for å låse opp resten av Groovy og Gradle: JVM-automatisering og byggeutvikling-kurset, kan du oppgradere til CoddyKit PRO. Kurset i Groovy og Gradle: JVM-automatisering og byggeutvikling inneholder totalt 4 leksjoner.
Hva lærer jeg i «Konvensjonsplugins og byggelogikk»?
Utvikle og bruk konvensjonsplugins for å håndheve konsekvente byggekonfigurasjoner og standarder i organisasjonen Deres. Du øver på Groovy og Gradle: JVM-automatisering og byggeutvikling med praktisk kode som du kjører direkte i nettleseren, mens en AI-veileder som er tilgjengelig døgnet rundt, svarer på spørsmålene dine mens du jobber deg gjennom leksjonen.
Trenger jeg erfaring for å begynne med Groovy og Gradle: JVM-automatisering og byggeutvikling?
Ingen tidligere erfaring er nødvendig. Groovy og Gradle: JVM-automatisering og byggeutvikling på CoddyKit er lagt opp for både nybegynnere og viderekomne, så De kan begynne her eller helt fra start og lære i Deres eget tempo. Dette er leksjon 3 av 4.
Hvor lang tid tar leksjonen «Konvensjonsplugins og byggelogikk»?
De fleste CoddyKit-leksjoner tar omtrent 5–10 minutter. Hver leksjon er kort og interaktiv, slik at De gjør jevne fremskritt og kan fortsette akkurat der De slapp – både på nettet og i appen.
Kan jeg skrive og kjøre kode i denne Groovy og Gradle: JVM-automatisering og byggeutvikling-leksjonen?
Ja. Alle Groovy og Gradle: JVM-automatisering og byggeutvikling-leksjoner har en innebygd kodeeditor, slik at De kan skrive og kjøre ekte kode direkte i nettleseren og få umiddelbar tilbakemelding fra AI – uten lokal konfigurering.
Alle leksjonene i dette kurset
- Gradle Build Scans og innsikt
- Sikkerhet og legitimasjonshåndtering
- Konvensjonsplugins og byggelogikk
- Kataloger for avhengighetsversjoner og plattformer