Egyéni feladat fokozatban

1. Áttekintés

Ebben a cikkben kitérünk arra, hogyan hozzon létre egy egyéni feladatot a Gradle-ben. Megmutatunk egy új feladatdefiníciót egy build szkript vagy egy egyedi feladattípus segítségével.

A Gradle bevezetését lásd ebben a cikkben. Ez tartalmazza a Gradle alapjait és - ami a legfontosabb a cikk számára - a Gradle feladatok bevezetését.

2. Belső egyéni feladatmeghatározás épít.gradle

Egyenes Gradle feladat létrehozásához hozzá kell adnunk a definícióját a feladatunkhoz épít.gradle fájl:

task welcome {doLast {println 'Üdvözöllek a Baeldungban!' }} 

A fenti feladat fő célja csupán az „Üdvözöljük a Baeldungban!” Szöveg nyomtatása. Ellenőrizhetjük, hogy ez van-e feladat elérhető futással gradle feladatok –minden parancs:

gradle feladatok - mind 

A feladat a csoport alatti listán található Egyéb feladatok:

Egyéb feladatok ----------- szívesen

Ugyanúgy végrehajtható, mint bármely más Gradle feladat:

gradle szívesen 

A kimenet a vártnak felel meg - a „Welcome to the Baeldung!” üzenet.

Megjegyzés: ha opció -minden nincs beállítva, akkor az „Egyéb” kategóriába tartozó feladatok nem láthatók. Az Egyéni fokozat feladat más csoportba tartozhat, mint az „Egyéb”, és tartalmazhat leírást.

3. Állítsa be a Csoport és leírás elemet

Néha hasznos a feladatokat funkciók szerint csoportosítani, így azok egy kategória alatt láthatók. Gyorsan tudunk készletcsoportot az egyéni feladatainkhoz, csak egy csoport tulajdonságának meghatározásával:

task welcome {group 'Sample category' doLast {println 'Welcome on the Baeldung!' }}

Most, amikor a Gradle parancsot futtatjuk az összes rendelkezésre álló feladat (-minden opcióra már nincs szükség), új csoport alatt látjuk a feladatunkat:

Minta kategóriafeladatok --------------------- szívesen 

Azonban másoknak is hasznos, ha meglátják, mi a feladat felelős. Tudunk hozzon létre egy leírást amely rövid információkat tartalmaz:

task welcome {csoport "Minta kategória" leírás "Feladatok, amelyek egy üdvözlő üzenetet mutatnak" doLast {println "Üdvözöljük a Baeldungban!" }} 

Amikor kinyomtatjuk az elérhető feladatok listáját, a kimenet a következő lesz:

Minta kategóriafeladatok --------------------- welcome - Feladatok, amelyek üdvözlő üzenetet mutatnak 

Ezt a fajta feladatmeghatározást nevezzük ad-hoc meghatározás.

A továbbiakban előnyös egy testreszabható feladat létrehozása, amely a definíciót újra felhasználhatja. Bemutatjuk, hogyan hozhat létre feladatot egy típusból, és hogyan tehet elérhetővé testreszabást a feladat felhasználói számára.

4. Határozza meg a Gradle Task Type Inside-t épít.gradle

A fenti „welcome” feladat nem testreszabható, így a legtöbb esetben nem túl hasznos. Futtathatjuk, de ha szükségünk van rá egy másik projektben (vagy alprojektben), akkor át kell másolnunk és beillesztenünk a definícióját.

Gyorsan tudunk engedélyezze a feladat testreszabását egy feladattípus létrehozásával. Pusztán egy feladat típusa van megadva a build szkriptben:

class PrintToolVersionTask kiterjeszti DefaultTask {Karaktereszköz @TaskAction void printToolVersion () {switch (tool) {case 'java': println System.getProperty ("java.version") break case 'groovy': println GroovySystem.version break default: dob új IllegalArgumentException ("Ismeretlen eszköz")}}}

A Az egyedi feladattípus egy egyszerű Groovy osztály, amely kiterjeszti DefaultTask - az osztály, amely meghatározza a szokásos feladatmegvalósítást. Vannak más feladattípusok is, amelyekből kibővíthetjük, de a legtöbb esetben a DefaultTask osztály a megfelelő választás.

PrintToolVersionTaskA feladat eszköz tulajdonságot tartalmaz, amelyet példányok testreszabhatnak ennek a feladatnak:

Vonós eszköz 

Annyi tulajdonságot adhatunk hozzá, amennyit csak akarunk - ne feledje, hogy ez csak egy egyszerű Groovy osztályú mező.

Ezenkívül tartalmazza metódussal kiegészítve @TaskAction. Meghatározza, hogy mit csinál ez a feladat. Ebben az egyszerű példában kinyomtatja a telepített Java vagy Groovy verzióját - az adott paraméter értékétől függ.

Egy egyéni feladat futtatásához a létrehozott feladattípus alapján szükségünk van hozzon létre egy új ilyen típusú feladatpéldányt:

feladat printJavaVersion (típus: PrintToolVersionTask) {eszköz 'java'} 

A legfontosabb részek:

  • feladatunk a PrintToolVersionTask típus, tehát végrehajtásakor kiváltja a metódussal kiegészített műveletet @TaskAction
  • hozzáadtunk egy testreszabott eszköz tulajdonság értéket (Jáva), amelyet a PrintToolVersionTask

A fenti feladat futtatásakor a kimenet a vártnak felel meg (a telepített Java verziótól függ):

> Feladat: printJavaVersion 9.0.1 

Most hozzunk létre egy feladatot, amely kinyomtatja a Groovy telepített verzióját:

feladat printGroovyVersion (típus: PrintToolVersionTask) {eszköz 'groovy'} 

Ugyanazt a feladattípust használja, mint amit korábban definiáltunk, de más eszköz tulajdonságértéke van. Amikor ezt a feladatot végrehajtjuk, kinyomtatja a Groovy verziót:

> Feladat: printGroovyVersion 2.4.12 

Ha nincs túl sok egyéni feladatunk, akkor azokat közvetlenül meghatározhatjuk a épít.gradle fájl (mint fentebb tettük). Ha azonban néhánynál több van, akkor a miénk épít.A gradle fájl nehezen olvasható és érthetővé válik.

Szerencsére Gradle kínál erre néhány megoldást.

5. Határozza meg a Feladat típusát a buildSrc Mappa

Tudunk definiálja a feladattípusokat a buildSrc mappa, amely a root projekt szintjén található. A Gradle mindent összeállít, ami benne van, és típusokat ad hozzá az osztályúthoz, hogy a build szkriptünk használni tudja.

A feladattípusunk, amelyet korábban definiáltunk (PrintToolVersionTask) áthelyezhetők a buildSrc / src / main / groovy / com / baeldung / PrintToolVersionTask.groovy. Csak néhányat kell hozzáfűznünk importálás a Gradle API-ból beköltözött osztályba.

Korlátlan számú feladattípust határozhatunk meg a buildSrc mappába. Könnyebb karbantartani, olvasni, és a feladattípus deklaráció nem ugyanazon a helyen, mint a feladat példányosítása.

Ezeket a típusokat ugyanúgy használhatjuk, mint közvetlenül a build szkriptben definiált típusokat. Csak arra kell emlékeznünk, hogy megfelelő importot adjunk hozzá.

6. Határozza meg a Feladat típusát a beépülő modulban

Egyéni Gradle beépülő modulban meghatározhatunk egyedi feladattípusokat. Kérjük, olvassa el ezt a cikket, amely leírja, hogyan definiálható az egyéni Gradle bővítmény, amelyet a következők határoznak meg:

  • épít.gradle fájl
  • buildSrc mappa más Groovy osztályokként

Ezek az egyéni feladatok akkor lesznek elérhetők a buildünk számára, amikor meghatározzuk a függőséget ettől a bővítménytől. Felhívjuk figyelmét, hogy ad-hoc feladatok is rendelkezésre állnak - nem csak egyedi feladattípusok.

7. Következtetés

Ebben az oktatóanyagban kitértünk arra, hogyan lehet egyéni feladatot létrehozni a Gradle-ben. Nagyon sok olyan plugin áll rendelkezésre, amelyeket felhasználhat a épít.gradle fájl, amely sok egyedi feladattípust biztosít, amire szüksége van.

Mint mindig, a kódrészletek is elérhetők a Githubon.