משימה מותאמת אישית ב Gradle

1. סקירה כללית

במאמר זה נסקור כיצד צור משימה מותאמת אישית ב- Gradle. אנו נציג הגדרת משימה חדשה באמצעות סקריפט build או סוג משימה מותאם אישית.

להקדמה ל- Gradle, עיין במאמר זה. הוא מכיל את היסודות של Gradle ו - מה החשוב ביותר עבור מאמר זה - המבוא למשימות Gradle.

2. הגדרת משימה מותאמת אישית בפנים build.gradle

כדי ליצור משימת Gradle פשוטה, עלינו להוסיף את הגדרתה למשימה שלנו build.gradle קוֹבֶץ:

משימה בברכה {doLast {println 'ברוך הבא בבאלדונג!' }} 

המטרה העיקרית של המשימה הנ"ל היא רק להדפיס טקסט "ברוך הבא בבאלדונג!". אנחנו יכולים לבדוק אם זה המשימה זמינה על ידי ריצה משימות מדרגות - הכל פקודה:

משימות מדרגות - הכל 

המשימה נמצאת ברשימה תחת הקבוצה משימות אחרות:

משימות אחרות ----------- ברוך הבא

ניתן לבצע אותה בדיוק כמו כל משימה אחרת של Gradle:

ברוך הדרגה 

התפוקה כצפוי - "ברוך הבא בבאלדונג!" הוֹדָעָה.

הערה: אם אפשרות -את כל לא מוגדר, ואז משימות השייכות לקטגוריה "אחר" אינן גלויות. משימת Gradle מותאמת אישית יכולה להיות שייכת לקבוצה אחרת מ- "Other" ויכולה להכיל תיאור.

3. הגדר קבוצה ותיאור

לפעמים זה שימושי לקבץ משימות לפי פונקציה, כך שהן נראות בקטגוריה אחת. אנחנו יכולים במהירות מַעֲרֶכֶתקבוצה למשימות המותאמות אישית שלנו, רק על ידי הגדרת מאפיין קבוצתי:

משימה בברכה {group 'Sample category' doLast {println 'ברוך הבא על Baeldung!' }}

כעת כאשר אנו מפעילים את הפקודה Gradle כדי לרשום את כל המשימות הזמינות (-את כל אפשרות זו אינה נחוצה יותר), נראה את המשימה שלנו תחת קבוצה חדשה:

משימות קטגוריה לדוגמא --------------------- ברוך הבא 

עם זאת, זה גם מועיל לאחרים לראות על מה מוטלת האחריות. אנחנו יכולים ליצור תיאור המכיל מידע קצר:

משימה בברכה {קבוצה 'קטגוריית דוגמה' תיאור 'משימות המציגות הודעת קבלת פנים' doLast {println 'ברוך הבא בבילדונג!' }} 

כאשר אנו מדפיסים רשימה של המשימות הזמינות הפלט יהיה כדלקמן:

משימות לקטגוריות לדוגמא -------------------- ברוכים הבאים - משימות המציגות הודעת קבלת פנים 

סוג זה של הגדרת משימה נקרא הגדרה אד-הוק.

בהמשך, מועיל ליצור משימה הניתנת להתאמה אישית ובה ניתן להשתמש מחדש בהגדרה. נסקור כיצד ליצור משימה מסוג וכיצד להנגיש התאמה אישית מסוימת למשתמשים במשימה זו.

4. הגדר סוג משימת דרג פנימי build.gradle

לא ניתן להתאים את משימת "קבלת הפנים" הנ"ל, ולכן, ברוב המקרים, היא אינה שימושית במיוחד. אנו יכולים להריץ אותו, אך אם אנו זקוקים לו בפרויקט אחר (או תת-פרויקט) אחר, עלינו להעתיק ולהדביק את הגדרתו.

אנחנו יכולים במהירות אפשר התאמה אישית של המשימה על ידי יצירת סוג משימה. בסך הכל, סוג משימה מוגדר בתוך סקריפט הבנייה:

class PrintToolVersionTask מרחיב את DefaultTask {כלי מחרוזת @TaskAction בטל printToolVersion () {switch (tool) {case 'java': println System.getProperty ("java.version") case case 'groovy': println GroovySystem.version ברירת מחדל הפסקה: זרוק חדש IllegalArgumentException ("כלי לא ידוע")}}

א סוג משימה מותאם אישית הוא מחלקה גרובית פשוטה שמתרחבת DefaultTask - הכיתה המגדירה יישום משימות סטנדרטי. ישנם סוגי משימות אחרים מהם אנו יכולים להרחיב, אך ברוב המקרים, DefaultTask הכיתה היא הבחירה המתאימה.

PrintToolVersionTaskהמשימה מכילה מאפיין כלי שניתן להתאים אישית לפי מופעים של משימה זו:

כלי מיתרים 

אנו יכולים להוסיף כמה נכסים שרק נרצה - זכור שזה רק שדה פשוט של Groovy.

בנוסף, הוא מכיל שיטת הערה עם @ TaskAction. הוא מגדיר מה משימה זו עושה. בדוגמה פשוטה זו היא מדפיסה גרסה של Java או Groovy מותקן - תלוי בערך הפרמטר הנתון.

כדי להפעיל משימה בהתאמה אישית המבוססת על סוג המשימות שנוצר עלינו צור מופע משימות חדש מסוג זה:

משימת printJavaVersion (סוג: PrintToolVersionTask) {כלי 'java'} 

החלקים החשובים ביותר הם:

  • המשימה שלנו היא PrintToolVersionTask סוג, כך כאשר הוא מבוצע, הוא יפעיל את הפעולה שהוגדרה בשיטה עם הערות @ TaskAction
  • הוספנו ערך מאפיין כלי מותאם אישית (ג'אווה) אשר ישמש את PrintToolVersionTask

כאשר אנו מפעילים את המשימה לעיל הפלט הוא כצפוי (תלוי בגרסת Java המותקנת):

> משימה: printJavaVersion 9.0.1 

עכשיו בואו ניצור משימה שמדפיסה את הגרסה המותקנת של גרובי:

משימת printGroovyVersion (סוג: PrintToolVersionTask) {tool 'groovy'} 

הוא משתמש באותו סוג משימה כפי שהגדרנו קודם, אך יש לו ערך מאפיין כלי אחר. כאשר אנו מבצעים משימה זו היא מדפיסה את גרסת גרובי:

> משימה: printGroovyVersion 2.4.12 

אם אין לנו יותר מדי משימות מותאמות אישית, נוכל להגדיר אותן ישירות ב- build.gradle קוֹבֶץ (כמו שעשינו לעיל). עם זאת, אם ישנם יותר מכמה אזים שלנו לִבנוֹת.קובץ דרגה הופך להיות קשה לקריאה ולהבנה.

למרבה המזל, Gradle מספק כמה פתרונות לכך.

5. הגדירו את סוג המשימות ב buildSrc תיקיה

אנחנו יכולים הגדר סוגי משימות ב buildSrc התיקיה שנמצאת ברמת פרויקט השורש. Gradle מרכיב את כל מה שיש בתוכו ומוסיף סוגים למסלול הכיתה כך שסקריפט ה- build שלנו יוכל להשתמש בו.

סוג המשימות שלנו שהגדרנו קודם (PrintToolVersionTask) ניתן להעביר אל buildSrc / src / main / groovy / com / baeldung / PrintToolVersionTask.groovy. עלינו להוסיף רק כמה יבוא מ- API של Gradle לכיתה שעברה.

אנו יכולים להגדיר מספר בלתי מוגבל של סוגי משימות ב- buildSrc תיקיה. קל יותר לתחזק, לקרוא, וההכרזה על סוג המשימה אינה נמצאת באותו מקום כמו יישום המשימות.

אנו יכולים להשתמש בסוגים אלה באותו אופן שבו אנו משתמשים בסוגים המוגדרים ישירות בסקריפט הבנייה. עלינו לזכור רק להוסיף יבוא מתאים.

6. הגדר את סוג המשימה בתוסף

אנו יכולים להגדיר סוגי משימות מותאמים אישית בתוך תוסף Gradle מותאם אישית. אנא עיין במאמר זה המתאר כיצד להגדיר תוסף Gradle מותאם אישית, המוגדר ב:

  • build.gradle קוֹבֶץ
  • buildSrc תיקיה כמו שיעורי גרובי אחרים

משימות מותאמות אישית אלה יהיו זמינות לבנייה שלנו כאשר אנו מגדירים תלות בתוסף זה. לידיעתך, משימות אד-הוק זמינות גם כן - לא רק סוגי משימות מותאמות אישית.

7. מסקנה

במדריך זה סקרנו כיצד ליצור משימה מותאמת אישית ב- Gradle. יש הרבה תוספים זמינים שבהם אתה יכול להשתמש שלך build.gradle קובץ שיספק הרבה סוגי משימות מותאמות אישית שאתה צריך.

כמו תמיד, קטעי קוד זמינים ב- Github.


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