Pisanje prilagođenih Gradle dodataka

Ovaj je članak dio serije: • Uvod u Gradle

• Mrav vs Maven vs Gradle

• Pisanje prilagođenih dodataka za Gradle (trenutni članak) • Stvaranje masne tegle u Gradleu

1. Uvod

Gradle je vrlo popularan alat za izgradnju, koji je često cijenjen zbog vrlo prilagodljivog postupka gradnje.

Danas ćemo pokazati kako stvoriti prilagođene dodatke Gradle, koji će nam omogućiti da izmijenimo postupak izrade izvan onoga što možemo postići standardnom konfiguracijom.

2. Mjesto izvora dodatka

Naš kôd možemo smjestiti na nekoliko različitih mjesta. Svi oni imaju neke prednosti i nedostatke.

2.1. Izradite skriptu

Izvorni kod našeg dodatka možemo jednostavno staviti u samu skriptu gradnje. To će nam omogućiti automatsku kompilaciju i uključivanje dodatka.

Vrlo je jednostavno, međutim, naš dodatak neće biti vidljiv izvan skripte za izgradnju. Zbog toga ga ne možemo ponovno koristiti u drugim skriptama za izgradnju.

2.2. BuildSrc Mapa

Druga mogućnost koju možemo koristiti je postavljanje izvornog koda našeg dodatka u buildSrc / src / main / java mapu.

Kad pokrenete Gradle, provjerit će postojanje buildSrc mapu. Ako to postoji, Gradle će automatski izraditi i uključiti naš dodatak.

To će nam pružiti mogućnost dijeljenja našeg dodatka između različitih skripti za izgradnju, ali još uvijek ga nećemo moći koristiti u drugim projektima.

2.3. Samostalni projekt

Konačno, svoj dodatak možemo stvoriti kao zasebni projekt koji čini dodatak u potpunosti ponovnim za upotrebu u raznim projektima.

Međutim, da bismo ga koristili u vanjskom projektu, morat ćemo ga povezati u jar datoteku i dodati u projekt.

3. Naš prvi dodatak

Krenimo s osnovama - svaki Gradle dodatak mora implementirati com.gradle.api.Plugin sučelje.

Sučelje je generičko, tako da ga možemo parametrizirati s različitim vrstama parametara. Obično je vrsta parametra org.gradle.api.Project.

Međutim, možemo koristiti različite parametre tipa tako da se dodatak primjenjuje u različitim životnim fazama:

  • koristeći org.gradle.api.Postavke rezultirat će primjenom dodatka na skriptu za postavke
  • koristeći org.gradle.api.Gradle rezultirat će primjenom dodatka na skriptu za inicijalizaciju

Najjednostavniji dodatak koji možemo stvoriti je Pozdrav svijete primjena:

javna klasa GreetingPlugin implementira dodatak {@Override public void apply (projektni projekt) {project.task ("hello") .doLast (zadatak -> System.out.println ("Hello Gradle!")); }}

Sada ga možemo primijeniti dodavanjem retka unutar naše skripte za izgradnju:

primijeni dodatak: GreetingPlugin

Sada, nakon poziva zdravo zdravo, vidjet ćemo "Zdravo Gradle" poruka u zapisnicima.

4. Konfiguracija dodatka

Većina dodataka trebat će pristup vanjskoj konfiguraciji iz skripte za izgradnju.

To možemo učiniti pomoću produžni objekti:

javna klasa GreetingPluginExtension {private String greeter = "Baeldung"; private String message = "Poruka s dodatka!" // standardni geteri i postavljači}

Dodajmo sada novo objekt proširenja u našu klasu dodataka:

@Override javna praznina se primjenjuje (projektni projekt) {GreetingPluginExtension extension = project.getExtensions () .create ("pozdrav", GreetingPluginExtension.class); project.task ("hello") .doLast (zadatak -> {System.out.println ("Pozdrav," + extension.getGreeter ()); System.out.println ("Imam poruku za tebe:" + proširenje .getMessage ());}); }

Sad, kad nazovemo zdravo zdravo, vidjet ćemo zadanu poruku definiranu u našem GreetingPluginExtention.

No budući da smo kreirali proširenje, to možemo upotrijebiti zatvaranjem unutar skripte gradnje:

pozdrav {greeter = "Stranger" message = "Poruka iz skripte za izgradnju"}

5. Samostalni projekt dodatka

Da bismo stvorili samostalne dodatke za Gradle, moramo napraviti malo više posla.

5.1. Postaviti

Prvo, moramo uvesti ovisnost o Gradle API-ju - što je sasvim jednostavno:

ovisnosti {compile gradleApi ()}

Imajte na umu da radi isto u Mavenu potrebno gradle-tooling-api ovisnost - iz spremišta Gradle:

  org.gradle gradle-tooling-api 3.0 org.gradle gradle-core 3.0 pod uvjetom da repo.gradle.org //repo.gradle.org/gradle/libs-releases-local/ 

5.2. Ožičenje dodatka

Da bismo Gradleu omogućili pronalaženje implementacije našeg samostalnog dodatka, moramo stvoriti datoteku svojstava u src / glavna / izvori / META-INF /gradle-dodatke.

Datoteka resursa mora imati naziv koji se podudara s ID-om dodatka. Dakle, ako naš dodatak ima ID org.baeldung.greeting, točan put datoteke bio bi META-INF / gradle-plugins / org.baeldung.greeting.properties.

Dalje, možemo definirati klasu implementacije dodatka:

 klasa implementacije = org.gradle.GreetingPlugin

The klasa implementacije treba biti jednako punom nazivu paketa naše klase dodataka.

5.3. Izrada ID-a dodatka

Postoje neka pravila i konvencije koje ID dodatka mora slijediti u Gradleu. Većina ih je slična pravilima naziva paketa u Javi:

  • Mogu sadržavati samo alfanumeričke znakove, „.“ i „-“
  • ID mora imati barem jedno "." odvajanje imena domene od naziva dodatka
  • Prostori imena org.gradle i com.gradleware su ograničeni
  • ID ne može započeti ili završiti s "."
  • Nema dva ili više uzastopnih "." dozvoljeni su znakovi

Konačno, postoji konvencija da ID dodatka treba biti malo slovo koje slijedi konvenciju obrnutog imena domene.

Glavna razlika između naziva Java paketa i naziva dodataka Gradle je ta što je naziv paketa obično detaljniji od ID-a dodatka.

5.4. Dodatak za objavljivanje

Kada želimo objaviti svoj dodatak kako bismo ga mogli ponovno koristiti u vanjskim projektima, imamo dva načina da to postignemo.

Prvo, svoj dodatak JAR možemo objaviti na vanjskom spremištu poput Maven ili Bršljan.

Alternativno možemo koristiti portal dodataka Gradle. To će omogućiti da naš dodatak bude dostupan širokoj zajednici Gradle. Više o objavljivanju projekata u spremištu Gradle možete pronaći u dokumentaciji portala dodataka Gradle.

5.5. Dodatak za razvoj Java Gradle

Kada pišemo svoje dodatke na Javi, možemo imati koristi od Dodatak za razvoj Java Gradle.

Ovo će se automatski prevesti i dodati gradleApi () ovisnosti. Također će izvršiti provjeru metapodataka dodatka kao dio tegla gradle zadatak.

Dodatak možemo dodati dodavanjem sljedećeg bloka u našu skriptu za izgradnju:

dodaci {id 'java-gradle-plugin'}

6. Ispitivanje dodataka

Da bismo provjerili radi li naš dodatak ispravno i je li pravilno primijenjen na Projekt, možemo koristiti org.gradle.testfixtures.ProjectBuilder stvoriti instancu Projekt.

Tada možemo provjeriti je li dodatak primijenjen i jesu li u našem sustavu prisutni odgovarajući zadaci Projekt primjer. Možemo koristiti standardni JUNIT testovi za to:

@Test javna praznina pozdravTest () {Projekt projekt = ProjectBuilder.builder (). Build (); project.getPluginManager (). apply ("com.baeldung.greeting"); assertTrue (project.getPluginManager () .hasPlugin ("com.baeldung.greeting")); assertNotNull (project.getTasks (). getByName ("hello")); }

7. Sažetak

U ovom smo članku prikazali osnove pisanja prilagođenih dodataka u Gradleu. Da biste dublje ušli u stvaranje dodataka, pogledajte Gradle dokumentaciju.

Kao i uvijek, svi uzorci koda mogu se naći na Githubu.

Sljedeći » Stvaranje masne tegle u Gradlama « Prethodni Ant vs Maven vs Gradle