Gradle

Gradle

Gradle logo.png
Grundlæggende data

Vedligeholder Gradle Inc.
Forlagsår 2007
Nuværende  version 7.2
( 17. august 2021 )
operativ system Platform uafhængig
programmeringssprog Java , Groovy , Kotlin
kategori Byg management værktøj
Licens Apache -licens, version 2.0
gradle.org

Gradle er et Java- baseret build management automatiseringsværktøj, der kan sammenlignes med Apache Ant og Apache Maven . Gradle bruger et Groovy- baseret domænespecifikt sprog (DSL) til at beskrive de projekter, der skal bygges. I modsætning til Maven -projektdefinitioner ( pom.xml) er Gradle -scripts direkte eksekverbar kode.

Gradle er designet til softwaresystembygninger, der består af en række forskellige projekter. Baseret på filosofien "forventer det uventede" blev der forsøgt at kombinere princippet "build-by-convention", der blev etableret i Maven (en variant af " konvention før konfiguration ") med fleksibiliteten i Ant.

Store projektopbygninger kan tage lang tid at gennemføre. Derfor understøtter Gradle både inkrementelle og parallelle byggeprocesser. Førstnævnte gør det kun muligt at bygge de dele af en software, der er blevet ændret eller er baseret på ændrede dele, mens sidstnævnte gør det muligt for visse opgaver under opbygningen (f.eks. Testene) at køre parallelt på flere CPU'er eller computere. Dette gør det muligt at opnå en meget højere hastighed i oprettelsesprocessen.

Gradle bruges af nogle velkendte rammer til deres opbygning - herunder Hibernate , Grails , Groovy samt Spring Integration og Spring Security . Android- systemet er tilføjet siden midten af ​​2013 . Siden er værktøjet blevet udvidet til at understøtte konstruktionen af ​​såkaldte "native" systemer, der ikke er baseret på Java-platformen. Programmeringssprogene C ++, C, Objective-C og Assembler understøttes her.

Opfattelse og plug-in arkitektur

Gradles build -koncept vedtager de standardkonventioner, der blev introduceret af Maven ("konvention over konfiguration") for bibliotekets layout af projektkilderne samt de sædvanlige faser til opbygning af et (Java) projekt (validering, kompilering, testudførelse, arkivoprettelse og rapport generation, distribution). Byggefilen kan derfor være minimal og bestå af en enkelt linje ( apply plugin: 'java') i et simpelt Java -projekt . Gradle vedtager også stort set Maven-konceptet om at styre et projekts afhængigheder på andre projekter eller tredjepartsbiblioteker. Gradle kan stole på de meget brugte Maven -depoter (lokale, virksomheds- og internetopbevaringssteder). Alternativt kan brugeren også bruge Ivy -rapporter.

Ligesom Maven består Gradle af en abstrakt kerne og et stort antal plug-ins og kan udvides på mange måder takket være denne struktur. Selv implementeringen af ​​Java build er baseret på et plug-in til Java. Med denne arkitektur tilbyder Gradle muligheden for at opbygge processer til enhver softwareplatform og giver brugeren mulighed for at formidle sine "ikke-konventionelle" ideer til værktøjet. Gradle leverer plug-ins fra fabrikken, der kan bygge Groovy, Scala og C ++ projekter ud over Java . Desuden understøttes opbygningen af ​​Java Enterprise Archives (WAR, EAR). Yderligere plug-ins gør det muligt at overvåge softwarekvaliteten ( f.eks. FindBugs , PMD , Checkstyle ) gennem automatiserede kontroller og generering af tilsvarende rapporter.

De plug-ins, der leveres med Gradle, er hovedsageligt lavet til udvikling og implementering af Java-, Groovy- og Scala-projekter, men de kan også bruges til andre programmeringssprog og arbejdsgange. Siden Android -teamet besluttede sig for Gradle som build -system, har udviklerne hovedsageligt reklameret for understøttelse af en build -model til native programmeringsmiljøer.

Gradle DSL

I modsætning til konventionerne i Apache Maven og dens XML -erklæringer arbejder brugeren med Gradles domænespecifikt sprog ( domænespecifikt sprog , bare DSL) , som han - som en Gradle -opbygningsfil altid et Groovy -script er - udvider eller kan ændre standard ejendomme. Han kan også skrive sine egne bygningsændringer med Groovy -kode eller overskrive foruddefinerede standarder og tilpasse sig sine egne behov. Gradle -brugere kan bruge begge stilarter: Mavens deklarative tilgang, baseret på standardkonventioner, og Ants mere imperative tilgang, hvor brugeren også skal definere alt i detaljer.

På grundlag af dette DSL -sprog er brugeren ikke tvunget til først at lære Groovy, før han prøver at bygge Gradle -scripts.

Siden Gradle 5.0 er der også blevet tilbudt en Kotlin DSL som et alternativ til Groovy DSL; dette tillader især en forbedret auto-komplementering i udviklingsmiljøerne.

Gradle -opbygningen

Gradle kender to hovedfaser af build -behandling, som det altid går igennem: konfiguration og udførelse. Under konfigurationscyklussen køres hele build -definitionen igennem for at generere afhængighedsgrafen (DAG), som indeholder sekvensen af ​​alle trin, der skal behandles. I den anden del køres denne graf igennem for de ønskede opgaver. Både konfigurationen og udførelsen er tilgængelig for brugeren via en åben API .

Byggeprocessen, som er beskrevet af opgavegrafen, består af en række opgaver, der er hierarkisk afhængige af hinanden, og hvor en efterfølger kun udføres, hvis dens forgængere er blevet gennemført med succes. Eksempelvis udføres 'test'-opgaven kun, hvis opgaverne' kompilere ',' procesressourcer ',' klasser ',' testCompile 'tidligere er blevet kørt uden fejl.

Byg filer

Gradle bruger hovedsageligt tre brugerdefinerede filer til en simpel opbygning:

  • build.gradle - definitionen af ​​build'en baseret på Gradle DSL med alle opgaver og afhængigheder af et projekt (et multiprojekt har en sådan build -fil pr. projekt, som kan holdes kort ved at arve egenskaberne fra dets "far" build -script).
  • settings.gradle (valgfrit) - i tilfælde af et multiprojekt er de deltagende delprojekter specificeret her.
  • gradle.properties (valgfrit) - en liste over egenskaber, der er gyldige for den projektspecifikke Gradle -initialisering af en build.

Gradle -scripts kan indeholde Groovy -kode direkte eller implementeres af en Groovy -klasse. Alternativt kan de indlæses fra et Maven -depot som en build -afhængighed.

Enkle eksempler på filen "build.gradle"

Det enkleste build -script til et Java -projekt ser sådan ud:

apply plugin: 'java'

Eksempel på definition af en separat opgave:

task hello << {
    println 'Dies ist der Hello-Task'
}

En opgave kan kaldes via kommandolinjen:

$ gradle hello

IDE support

Gradle-plug-ins er tilgængelige til mange integrerede udviklingsmiljøer , herunder NetBeans , IntelliJ IDEA og Eclipse . Alternativt kan Eclipse- og IDEA-projektfiler genereres ved hjælp af Gradle-plug-ins.

flere detaljer

Apache Ant builds kan erstattes af build.xmlGradle ved at importere filerne til Gradle. Myreopgaver kan også kaldes direkte fra DSL. Gradle kan også forbruge artefakter i Apache Maven -depoter som afhængigheder samt offentliggøre artefakter der. Gradle understøtter også Apache Ivy -depoter. Ved hjælp af Build Init -pluginet kan Maven -projekter konverteres til Gradle.

litteratur

  • Tim Berglund, Matthew [J.] McCullough: Byggeri og testning med Gradle . O'Reilly Media, Sebastopol CA 2011, ISBN 978-1-4493-0463-8 .
  • Joachim Baumann: Gradle: En kompakt introduktion til build -styringssystemet . d.punkt.verlag, 2013, ISBN 978-3-86490-049-5 .
  • Benjamin Muschko: Gradle in Action . Manning Publications, 2014, ISBN 978-1-61729-130-2 .
  • Hubert Klein Ikkink: Gradle Effective Implementation Guide. Packt Publishing, 2012, ISBN 1-84951-810-6
  • Etienne Studer: En introduktion til Gradle for Java-udviklere , Gradle vil allerede rocke build og Enterprise Gradle , 3-delt serie om Gradle i Java Magazine 1 til 3/2011

Weblinks

Individuelle beviser

  1. github.com .
  2. Gradle Open Source -projektet på Open Hub: Sprogside . I: Åben hub . (adgang til den 18. juli 2018).
  3. Gradle Open Source -projektet på Open Hub: Licenser -side . I: Åben hub . (adgang til den 18. juli 2018).
  4. Gradles hjemmeside
  5. heise online: Gradle 5.0 understøtter Java 11., 3. december 2018, tilgås den 24. juni 2021 .
  6. ^ Gradle Kotlin DSL Primer. I: Gradle brugervejledning. Hentet 24. juni 2021 .
  7. ^ Java -pluginet. I: Gradle brugervejledning. Hentet 24. juni 2021 .
  8. Byg Init Plugin. I: Gradle brugervejledning. Hentet 24. juni 2021 .