Uvod u Gradle

Ovaj je članak dio serije: • Uvod u Gradle (trenutni članak) • Mrav vs Maven vs Gradle

• Pisanje prilagođenih gradle dodataka

• Stvaranje masne tegle u Gradlama

1. Pregled

Gradle je sustav upravljanja gradnjom zasnovan na Groovyju dizajniran posebno za izgradnju projekata temeljenih na Javi.

Upute za instalaciju možete pronaći ovdje.

2. Građevni blokovi - projekti i zadaci

U Gradleu se Buildovi sastoje od jednog ili više projekata, a svaki projekt sastoji se od jednog ili više zadataka.

Projekt u Gradlama može se sastaviti staklenka, rat ili čak a zip datoteka.

Zadatak je jedan dio posla. To može uključivati ​​sastavljanje klasa ili stvaranje i objavljivanje Java / web arhiva.

Jednostavan zadatak može se definirati kao:

zadatak pozdrav {doLast {println 'Baeldung'}}

Ako izvršimo gore navedeni zadatak pomoću gradle -q zdravo naredba s istog mjesta gdje graditi.gradle nalazi se, trebali bismo vidjeti izlaz u konzoli.

2.1. Zadaci

Gradleove skripte za izgradnju nisu ništa drugo do Groovy:

zadatak toLower {doLast {String someString = 'POZDRAV OD BAELDUNGA' println "Izvornik:" + someString println "Mala slova:" + someString.toLowerCase ()}}

Možemo definirati zadatke koji ovise o drugim zadacima. Ovisnost o zadatku može se definirati dodavanjem ovisiOn: taskName argument u definiciji zadatka:

zadatak helloGradle {doLast {println 'Zdravo Gradle!' }} zadatak fromBaeldung (zavisiOn: helloGradle) {doLast {println "Ja sam iz Baeldunga"}}

2.2. Dodavanje ponašanja zadatku

Zadatak možemo definirati i poboljšati nekim dodatnim ponašanjem:

zadatak helloBaeldung {doLast {println 'bit ću izvršen drugi'}} helloBaeldung.doFirst {println 'prvo ću biti izvršen'} helloBaeldung.doLast {println 'bit ću izvršen treći'} helloBaeldung {doLast {println 'bit ću izvršena četvrta '}}

doFirst i doPosljednji dodaj radnje na vrh odnosno na dno popisa radnji i može se definirati više puta u jednom zadatku.

2.3. Dodavanje svojstava zadatka

Također možemo definirati svojstva:

zadatak ourTask {ext.theProperty = "theValue"} 

Evo, postavljamo "vrijednost" kao vlasništvo od našeZadatak zadatak.

3. Upravljanje dodacima

U Gradleu postoje dvije vrste dodataka - scenarij, i binarni.

Da bi imao koristi od dodatne funkcionalnosti, svaki dodatak mora proći kroz dvije faze: rješavajući i prijavljivanje.

Rješavajući znači pronaći ispravnu verziju jar dodatka i dodati je na razredna staza projekta.

Podnošenje zahtjeva dodaci se izvršavaju Dodatak.primjena (T)na projektu.

3.1. Primjena dodataka za skripte

U aplugin.gradle, možemo definirati zadatak:

zadatak iz dodatka {doLast {println "Ja sam iz dodatka"}}

Ako ovaj dodatak želimo primijeniti na naš projekt graditi.gradle datoteku, sve što trebamo učiniti je dodati ovaj redak u naš graditi.gradle:

prijaviti se iz: 'aplugin.gradle' 

Sada izvršavam zadaci gradle naredba treba prikazati fromPlugin zadatak na popisu zadataka.

3.2. Primjena binarnih dodataka pomoću dodataka DSL

U slučaju dodavanja jezgrenog binarnog dodatka, možemo dodati kratka imena ili ID dodatka:

dodaci {id 'aplikacija'}

Sada trčanje zadatak od primjena dodatak bi trebao biti dostupan u projektu za izvršavanje bilo kojeg izvodljiv staklenka. Da bismo primijenili dodatak zajednice, moramo spomenuti potpuno kvalificirani ID dodatka:

dodaci {id "org.shipkit.bintray" verzija "0.9.116"}

Sada, Shipkit zadaci trebaju biti dostupni na zadaci gradle popis.

Ograničenja dodataka DSL su:

  • Ne podržava Groovy kod unutar dodaci blok
  • dodaci block mora biti izjava najviše razine u skriptama za izgradnju projekta (samo buildscripts {} blok je dopušten prije njega)
  • Dodaci DSL se ne može pisati u dodatku za skripte, postavke.gradle datoteku ili u init skripte

Dodaci DSL još uvijek se inkubira. DSL i druge konfiguracije mogu se promijeniti u kasnijim verzijama Gradle-a.

3.3. Naslijeđeni postupak primjene dodataka

Također možemo primijeniti dodatke pomoću "Primijeni dodatak":

primijeni dodatak: 'rat'

Ako trebamo dodati dodatak za zajednicu, moramo dodati vanjski jar u put staze koristeći buildscript {} blok.

Zatim, možemo primijeniti dodatak u skriptama izrade, alitek nakon bilo kojeg postojećeg dodaci {} blok:

buildscript {repozitoriji {maven {url "//plugins.gradle.org/m2/"}} ovisnosti {classpath "org.shipkit: shipkit: 0.9.117"}} primijeni dodatak: "org.shipkit.bintray-release"

4. Upravljanje ovisnostima

Gradle podržava vrlo fleksibilan sustav upravljanja ovisnostima, kompatibilan je sa širokim rasponom dostupnih pristupa.

Najbolji postupci za upravljanje ovisnostima u Gradleu su izrada verzija, dinamičko izrađivanje verzija, rješavanje sukoba verzija i upravljanje prijelaznim ovisnostima.

4.1. Konfiguracija ovisnosti

Ovisnosti su grupirane u različite konfiguracije. Konfiguracija ima ime i mogu se međusobno proširiti.

Ako primijenimo dodatak Java, imat ćemo kompajlirati, testiratiKompilirati, vrijeme izvođenja dostupne konfiguracije za grupiranje naših ovisnosti. The zadani configuration se proteže “vrijeme izvođenja ”.

4.2. Izjava o ovisnostima

Pogledajmo primjer dodavanja nekih ovisnosti (Spring i Hibernate) na nekoliko različitih načina:

ovisnosti {compile group: 'org.springframework', name: 'spring-core', inačica: '4.3.5.RELEASE' compile 'org.springframework: spring-core: 4.3.5.RELEASE', 'org.springframework: spring-aop: 4.3.5.RELEASE 'kompajliranje ([grupa:' org.springframework ', naziv:' spring-core ', verzija:' 4.3.5.RELEASE '], [grupa:' org.springframework ', naziv : 'spring-aop', verzija: '4.3.5.RELEASE']) testCompile ('org.hibernate: hibernate-core: 5.2.12.Final') {transitive = true} runtime (group: 'org.hibernate' , naziv: 'hibernate-core', verzija: '5.2.12.Final') {transitive = false}}

Deklariramo ovisnosti u različitim konfiguracijama: sastaviti, testSastaviti, i vrijeme izvođenja u raznim formatima.

Ponekad su nam potrebne ovisnosti koje imaju više artefakata. U takvim slučajevima možemo dodati oznake samo s artefaktima @ proširenjeName (ili vanjsko u proširenom obliku) za preuzimanje željenog artefakta:

runtime "org.codehaus.groovy: groovy-all: [zaštićen e-poštom]" runtime group: 'org.codehaus.groovy', name: 'groovy-all', verzija: '2.4.11', ext: 'jar'

Ovdje smo dodali @jar notacija za preuzimanje samo artefakta jar bez ovisnosti.

Da bismo dodali ovisnosti u bilo koje lokalne datoteke, možemo koristiti nešto poput ovog:

kompajliranje datoteka ('libs / joda-time-2.2.jar', 'libs / junit-4.12.jar') kompajliranje fileTree (dir: 'libs', uključuju: '* .jar')

Kada želimo izbjeći prijelazne ovisnosti,to možemo učiniti na razini konfiguracije ili na razini ovisnosti:

konfiguracije {testCompile.exclude module: 'junit'} testCompile ("org.springframework.batch: spring-batch-test: 3.0.7.RELEASE") {izuzeti modul: 'junit'}

5. Izgradnje više projekata

5.1. Izgradite životni ciklus

U fazi inicijalizacije Gradle određuje koji će projekti sudjelovati u izradi više projekata.

To se obično spominje u postavke.gradle datoteka koja se nalazi u korijenu projekta. Gradle također stvara primjerke projekata koji sudjeluju.

U fazi konfiguracije, sve izrađene instance projekata konfiguriraju se na temelju konfiguracije značajke Gradle na zahtjev.

U ovoj su značajci konfigurirani samo potrebni projekti za izvršenje određenog zadatka. Na taj je način vrijeme konfiguracije jako smanjeno za veliku izgradnju više projekata. Ova se značajka još uvijek inkubira.

Konačno, u fazi izvršavanja izvršava se podskup zadataka, stvoren i konfiguriran. Kod možemo uključiti u postavke.gradle i graditi.gradle datoteke za uočavanje ove tri faze.

U postavke.gradle :

println 'U fazi inicijalizacije.'

U graditi.gradle :

println 'U fazi konfiguracije.' zadatak konfiguriran {println 'Također u fazi konfiguracije.' } zadatak execFirstTest {doLast {println 'Tijekom faze izvršavanja.' }} zadatak execSecondTest {doFirst {println 'Prvo u fazi izvršenja.' } doLast {println 'Napokon tijekom faze izvršenja.' } println 'U fazi konfiguracije.' }

5.2. Stvaranje višestruke gradnje

Možemo izvršiti gradle init naredba u korijenskoj mapi za izradu kostura za oboje postavke.gradle i graditi.gradle datoteka.

Sve uobičajene konfiguracije čuvat će se u skripti root gradnje:

sviprojekti {repozitoriji {mavenCentral ()}} potprojekti {version = '1.0'}

Datoteka za postavljanje mora sadržavati naziv korijenskog projekta i naziv potprojekta:

rootProject.name = 'multi-project-builds' uključuju 'knjižnicu pozdrava', 'greeter'

Sada moramo imati nekoliko imenovanih mapa potprojekata pozdravna knjižnica i pozdravi imati demo višestruke gradnje. Svaki potprojekt mora imati pojedinačnu skriptu za izgradnju kako bi konfigurirao njihove pojedinačne ovisnosti i ostale potrebne konfiguracije.

Ako bismo željeli imati svoje pozdravi projekt ovisan o pozdravna knjižnica, moramo uključiti ovisnost u skriptu izgradnje za pozdravi:

ovisnosti {compile project (': pozdrav-biblioteka')}

6. Korištenje Gradle Wrappera

Ako projekt Gradle ima gradlew datoteka za Linux i gradlew.bat datoteku za Windows, za izgradnju projekta ne trebamo instalirati Gradle.

Ako izvršimo gradlew izgraditi u sustavu Windows i ./gradlew graditi u Linuxu, Gradleova distribucija navedena u gradlew datoteka će se automatski preuzeti.

Ako želimo dodati omot Gradle u naš projekt:

omot gradle --gradle-verzija 4.2.1

Naredbu treba izvršiti iz korijena projekta. To će stvoriti sve potrebne datoteke i mape za povezivanje omotača Gradle s projektom. Drugi način da to učinite je dodati zadatak omota u skriptu gradnje:

omot zadatka (tip: Wrapper) {gradleVersion = '4.2.1'}

Sada moramo izvršiti omot zadatak i zadatak će vezati naš projekt za omot. Osim gradlew datoteke, a omot mapa generira se unutar gradle mapa koja sadrži staklenku i datoteku svojstava.

Ako se želimo prebaciti na novu verziju Gradlea, trebamo samo promijeniti unos u gradle-omot.svojstva.

7. Zaključak

U ovom smo članku pogledali Gradle i vidjeli da ima veću fleksibilnost u odnosu na druge postojeće alate za izgradnju u smislu rješavanja sukoba verzija i upravljanja prijelaznim ovisnostima.

Izvorni kôd za ovaj članak dostupan je na GitHubu.

Sljedeći » Mrav vs Maven vs Gradle