Vlastná úloha v Gradle

1. Prehľad

V tomto článku sa budeme venovať tomu, ako na to vytvoriť vlastnú úlohu v Gradle. Ukážeme si novú definíciu úlohy pomocou zostavovacieho skriptu alebo vlastného typu úlohy.

Úvod do Gradle nájdete v tomto článku. Obsahuje základné informácie o Gradle a - čo je pre tento článok najdôležitejšie - úvod do úloh Gradle.

2. Definícia vlastnej úlohy vo vnútri build.gradle

Na vytvorenie priamej úlohy Gradle je potrebné pridať jej definíciu build.gradle spis:

task welcome {doLast {println 'Vitajte v Baeldungu!' }} 

Hlavným cieľom vyššie uvedenej úlohy je iba vytlačiť text „Vitajte v Baeldungu!“. Môžeme skontrolovať, či je to tak úloha je k dispozícii behom gradle úlohy –všetky príkaz:

gradle úlohy - všetky 

Úloha je na zozname v skupine Ďalšie úlohy:

Ďalšie úlohy ----------- vítané

Môže byť vykonaný ako každá iná úloha v Gradle:

gradle vitaj 

Výstup je podľa očakávania - „Vitajte v Baeldungu!“ správa.

Poznámka: ak je to možné –Všetky nie je nastavené, potom úlohy, ktoré patria do kategórie „Ostatné“, nie sú viditeľné. Úloha Custom Gradle môže patriť do inej skupiny ako „Iné“ a môže obsahovať popis.

3. Nastavte skupinu a popis

Niekedy je užitočné zoskupiť úlohy podľa funkcií, takže sú viditeľné v jednej kategórii. Môžeme rýchlo nastaviťskupina pre naše vlastné úlohy, iba definovaním vlastnosti skupiny:

úloha vítaná {skupina 'Vzorová kategória' doLast {println 'Vitajte na Baeldungu!' }}

Teraz, keď spustíme príkaz Gradle, zobrazí sa zoznam všetkých dostupných úloh (–Všetky táto možnosť už nie je potrebná), uvidíme našu úlohu v novej skupine:

Vzorové úlohy kategórií --------------------- vítané 

Je však tiež prospešné pre ostatných, aby videli, za čo je úloha zodpovedná. Môžeme vytvorte popis ktorý obsahuje krátke informácie:

task welcome {group 'Sample category' description 'Tasks which shows a welcome message' doLast {println 'Welcome in the Baeldung!' }} 

Keď vytlačíme zoznam dostupných úloh, výstup bude nasledovný:

Vzorové úlohy kategórie --------------------- vitajte - Úlohy, ktoré zobrazujú uvítaciu správu 

Tento druh definície úlohy sa nazýva ad-hoc definícia.

Ďalej je užitočné vytvoriť si prispôsobiteľnú úlohu, ktorej definíciu možno znova použiť. Rozoberieme, ako vytvoriť úlohu z typu a ako sprístupniť prispôsobenie používateľom tejto úlohy.

4. Vo vnútri definujte typ úlohy Gradle build.gradle

Vyššie uvedenú „uvítaciu“ úlohu nie je možné prispôsobiť, takže vo väčšine prípadov nie je veľmi užitočná. Môžeme to spustiť, ale ak to potrebujeme v inom projekte (alebo čiastkovom projekte), potom musíme jeho definíciu skopírovať a vložiť.

Môžeme rýchlo umožniť prispôsobenie úlohy vytvorením typu úlohy. Iba v skripte na zostavenie je definovaný typ úlohy:

class PrintToolVersionTask extends DefaultTask {String tool @TaskAction void printToolVersion () {switch (tool) {case 'java': println System.getProperty ("java.version") break case 'groovy': println GroovySystem.version break default: throw new IllegalArgumentException ("Neznámy nástroj")}}}

A vlastný typ úlohy je jednoduchá trieda Groovy, ktorá sa rozširuje DefaultTask - trieda, ktorá definuje štandardnú implementáciu úlohy. Existujú aj ďalšie typy úloh, z ktorých môžeme rozšíriť, ale vo väčšine prípadov DefaultTask trieda je vhodná voľba.

PrintToolVersionTaskúloha obsahuje vlastnosť nástroja, ktorú je možné prispôsobiť inštanciami tejto úlohy:

Strunový nástroj 

Môžeme pridať toľko vlastností, koľko chceme - nezabudnite, že ide iba o jednoduché pole triedy Groovy.

Ďalej obsahuje metóda anotovaná s @TaskAction. Definuje, čo táto úloha robí. V tomto jednoduchom príklade vytlačí verziu nainštalovaného Java alebo Groovy - záleží na zadanej hodnote parametra.

Na spustenie vlastnej úlohy na základe vytvoreného typu úlohy musíme vytvoriť novú inštanciu úlohy tohto typu:

úloha printJavaVersion (typ: PrintToolVersionTask) {nástroj 'java'} 

Najdôležitejšie časti sú:

  • našou úlohou je a PrintToolVersionTask typ, tak po vykonaní spustí akciu definovanú v metóde s poznámkami @TaskAction
  • pridali sme prispôsobenú hodnotu vlastnosti nástroja (java), ktoré bude používať PrintToolVersionTask

Keď spustíme vyššie uvedenú úlohu, výstup je podľa očakávania (závisí od nainštalovanej verzie Java):

> Úloha: printJavaVersion 9.0.1 

Teraz vytvorme úlohu, ktorá vytlačí nainštalovanú verziu aplikácie Groovy:

úloha printGroovyVersion (typ: PrintToolVersionTask) {nástroj 'groovy'} 

Používa rovnaký typ úlohy, ako sme definovali predtým, má však inú hodnotu vlastnosti nástroja. Keď vykonáme túto úlohu, vytlačí sa Groovy verzia:

> Úloha: printGroovyVersion 2.4.12 

Ak nemáme príliš veľa vlastných úloh, môžeme ich definovať priamo v build.gradle spis (ako sme to urobili vyššie). Ak ich je však viac ako niekoľko, potom našich stavať.súbor gradle sa stáva ťažko čitateľným a zrozumiteľným.

Našťastie ponúka spoločnosť Gradle nejaké riešenia.

5. Definujte typ úlohy v buildSrc Priečinok

Môžeme definovať typy úloh v buildSrc priečinok, ktorý je umiestnený na koreňovej úrovni projektu. Gradle zostavuje všetko, čo je vo vnútri, a pridáva typy do cesty triedy, aby to mohol používať náš zostavovací skript.

Náš typ úlohy, ktorý sme definovali predtým (PrintToolVersionTask) je možné presunúť do priečinka buildSrc / src / main / groovy / com / baeldung / PrintToolVersionTask.groovy. Musíme pridať iba niektoré importy z Gradle API do dojatej triedy.

Môžeme definovať neobmedzený počet typov úloh v buildSrc priečinok. Ľahšie sa udržuje, číta a deklarácia typu úlohy sa nenachádza na rovnakom mieste ako inštancia úlohy.

Tieto typy môžeme používať rovnako, ako používame typy definované priamo v skripte zostavenia. Musíme pamätať iba na to, aby sme pridali vhodný import.

6. Definujte typ úlohy v doplnku

Môžeme definovať vlastné typy úloh vo vnútri vlastného pluginu Gradle. Prečítajte si tento článok, ktorý popisuje, ako definovať vlastný doplnok Gradle definovaný v:

  • build.gradle spis
  • buildSrc priečinok ako iné triedy Groovy

Tieto vlastné úlohy budú k dispozícii pre naše zostavenie, keď definujeme závislosť od tohto doplnku. Upozorňujeme, že k dispozícii sú aj úlohy ad-hoc - nielen vlastné typy úloh.

7. Záver

V tomto tutoriáli sme sa zaoberali tým, ako vytvoriť vlastnú úlohu v Gradle. Existuje veľa doplnkov, ktoré môžete použiť vo svojom build.gradle súbor, ktorý poskytne veľa vlastných typov úloh, ktoré potrebujete.

Útržky kódu sú ako vždy k dispozícii na stránkach Github.


$config[zx-auto] not found$config[zx-overlay] not found