Gradle

Den aktuelle version af siden er endnu ikke blevet gennemgået af erfarne bidragydere og kan afvige væsentligt fra den version , der blev gennemgået den 14. august 2019; checks kræver 30 redigeringer .
gradle
Type bygge automatiseringsværktøj [d]
Skrevet i Java , Groovy [2] og Kotlin
Operativ system på tværs af platforme
Første udgave 2007
Hardware platform Java virtuel maskine
nyeste version
Stat aktiv
Licens Apache-licens 2.0 [3]
Internet side gradle.org
 Mediefiler på Wikimedia Commons

Gradle  er et automatiseret byggesystem bygget på principperne fra Apache Ant og Apache Maven , men som leverer DSL'er i Groovy og Kotlin i stedet for den traditionelle XML -lignende form for projektkonfigurationsrepræsentation.

I modsætning til Apache Maven , som er baseret på projektets livscykluskoncept, og Apache Ant , hvor rækkefølgen af ​​udførelse af opgaver (mål) bestemmes af afhængigheder (afhængig af), bruger Gradle en rettet acyklisk graf til at bestemme rækkefølgen i hvilke opgaver der udføres.

Gradle er designet til udvidelsesmuligheder med flere projekter og understøtter vandfaldsudviklingsmodellen , der bestemmer, hvilke dele af byggetræet, der ikke er ændret, og hvilke opgaver, der afhænger af disse dele, der ikke skal genstartes.

De vigtigste plugins er til at udvikle og implementere Java , Groovy og Scala - applikationer, men der er plugins til andre programmeringssprog : C++ , Swift , Kotlin og også Spring - projekt med Spring Boot.

Den har sin egen Gradle Daemon [4] - en baggrundsproces for at fremskynde opbygningen af ​​projektet.

Installerer Gradle

1. Vi går til downloadsiden Arkiveret 31. oktober 2021 på Wayback Machine og vælger en bekvem metode til installation i dit OS.

2. Indstil miljøet til at arbejde med Gradle ved at indstille miljøvariabler.

3. Bekræft installationen ved at skrive på kommandolinjen for at få versionsnummeret:$ gradle -v или $ gradle -h - для помощи в работе программы.

Eksempelprojekt til Java

Lad os se på et eksempelprojekt, der bruger standard Maven - biblioteksstrukturen til kildekoder og ressourcer.

Denne struktur inkluderer følgende mapper:

  1. Opret disse java-projektfiler ved at køre kommandoen i projektmappen: gradle init
  2. Vælg "Projekttype" : ansøgning - indtast 2
  3. Vælg "Projektsprog": java - indtast 3
  4. Fælles projekt eller delt - indtast 1
  5. Vælg "Sprog DSL": groovy - indtast 1
  6. Vælg "projekt testramme" : JUnit 4 - indtast 1
  7. Indtast navnet på projektet og pakken (for eksempel: hovedprojekt).

Alt! Projektet er blevet oprettet og nu kan det åbnes i enhver IDE og arbejde direkte med de genererede mapper og filer.

Lad os finde Gradle build-filen for vores projekt langs stien /app/build.gradle:

plugins { // Anvend applikationsplugin'et for at tilføje understøttelse til at bygge en CLI-applikation i Java. id 'applikation' } repositories { // Brug Maven Central til at løse afhængigheder. mavenCentral () } afhængigheder { // Brug JUnit testramme. testimplementering 'junit:junit:4.13.1' // Denne afhængighed bruges af applikationen. implementering 'com.google.guava:guava:30.0-jre' } ansøgning { // Definer hovedklassen for applikationen. mainClass = 'mainProject.App' }

Lad os bygge projektet ved hjælp af gradle build-kommandoen:

> graduering :compileJava :procesressourcer :klasser :krukke :samle :compileTestJava :procesTestResources :testklasser :prøve :kontrollere :bygge BYG SUCCES

Den færdige jar-fil vil være i /app/build/libs: app.jar

Ryd op i de indbyggede filer med kommandoen: gradle clean

For at udføre denne jar fra kommandolinjen, lad os tilføje disse linjer til build.gradle -filen (java-versionen og vores hovedklasse):

java { sourceCompatibility = JavaVersion . VERSION_1_8 targetCompatibility = JavaVersion . VERSION_1_8 } krukke { manifest { attributter ( 'Main-Class' : 'mainProject.App' ) } }

Vi bygger projektet igen med gradle build-kommandoen -> gå til mappen /app/build/libs og skriv: java -cp . -jar app.jar

Vi skulle se hilsenen "Hej, verden!".

Livscyklus for opgaver i Gradle

Du kan se alle opgaver gennem kommandoen: gradle opgaver

Du kan se alle afhængigheder af det underordnede app-projekt ved hjælp af kommandoen: gradle app:dependencies

Java - plugin'et emulerer Maven- livscyklusserne som opgaver i en rettet acyklisk afhængighedsgraf for input og output for hver opgave. I dette eksempel afhænger udførelsen af ​​byggeopgaven af ​​resultatet af kontrol- og samleopgaverne . Tjek opgaven afhænger også af test , og montering afhænger af krukke .

Gradle tillader også projekter at bruge en mappestruktur, der adskiller sig fra Maven- konventionen . Følgende eksempel vil overveje et projekt, hvor kildekoden er i mappen src/java i stedet for src/main/java .

bygge.gradle

anvende plugin: 'java' sourceSets { hoved { java { srcDirs = [ 'src/java' ] } } }


Multi-projekt montering

For applikationer, der består af moduler, er det praktisk at bruge Gradle- multiprojekttilgangen :

  1. Hvert modul er placeret i sit eget separate bibliotek.
  2. Hvert modul kan inkludere underordnede moduler, som vil blive placeret i indlejrede mapper.
  3. Beskrivelsen af ​​multi-projektstrukturen udføres i settings.gradle i projektets rodbibliotek.
  4. Der er en build.gradle i projektets rodbibliotek, som kan tilpasse sig selv og underordnede moduler.
  5. Hvert underordnet modul kan have de samme to filer til at konfigurere sig selv og dets underordnede moduler.
  6. Denne tilgang giver dig mulighed for bekvemt at køre opgaver for specifikke moduler eller hele projektet som helhed.

Hovedopgaver

- Udførelse af opgaver på byggestadiet ( test, rapportering, logning osv. / ture til (netværk | tjenester), generelt alt, hvad enhver applikation kan gøre )

- Samling af projektets afhængige biblioteker til opbygning, distribution af adgangsgraden (som adgangsmodifikatorer i programmeringssprog) inde i den eksekverende kode

Hovedstrukturen af ​​build.gradle-filen

app / build . gradle . kts // Blok ansvarlig for tilslutning af plugins plugins { id ( "org.jetbrains.kotlin.jvm" ) version "1.4.31" Ansøgning } // Hoveddepoter, hvorfra plugins downloades repositories { mavenCentral () } // Afhængigheder for dit projekt afhængigheder { implementering ( platform ( "org.jetbrains.kotlin:kotlin-bom" )) // et eksempel på tilføjelse af et plugin til dit projekt implementering ( "org.jetbrains.kotlin:kotlin-stdlib-jdk8" ) implementering ( "com.google.guava:guava:30.1-jre" ) testImplementering ( "org.jetbrains.kotlin:kotlin-test" ) testImplementation ( "org.jetbrains.kotlin:kotlin-test-junit" ) } // Hovedklasse til at køre programmet ansøgning { hovedklasse . sæt ( "demo.AppKt" ) }

Se også

Litteratur

  • Muschko, B. og Dockter, H. Gradle i aktion. - Manning Publications Company, 2013. - 456 s. — ISBN 9781617291302 .
  • Berglund, T. Gradle Beyond the Basics. - O'Reilly Media, 2013. - 80 s. — ISBN 9781449373825 .
  • Berglund, T. og McCullough, M. Building and Testing with Gradle. - O'Reilly Media, 2011. - 110 s. — ISBN 9781449304638 .
  • Kousen, K. Gradle til Android. - O'Reilly Media, Incorporated, 2015. - 120 s. — ISBN 9781491947029 .
  • Ikkink, H.K. Gradle Effektiv implementeringsvejledning . - Packt Publishing, 2012. - 350 s. — ISBN 9781849518116 .

Noter

  1. https://github.com/gradle/gradle/releases/tag/v7.5.1
  2. Gradle Open Source-projektet på Open Hub: Languages-side - 2006.
  3. Gradle Open Source-projektet på Open Hub: Licenser-side - 2006.
  4. https://docs.gradle.org/current/userguide/gradle_daemon.html Arkiveret 1. november 2021 på Wayback Machine