העברת ויכוחים על שורת הפקודה ב- Gradle

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

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

במדריך מהיר זה, אנו הולכים לראות כיצד להעביר טיעונים בשורת הפקודה מ- Gradle.

2. סוגי ארגומנטים של קלט

כשאנחנו רוצים להעביר טיעוני קלט מה- CLI של Gradle, יש לנו שתי אפשרויות:

  • הגדרת מאפייני מערכת באמצעות דֶגֶל
  • הגדרת מאפייני פרויקט באמצעות -P דֶגֶל

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

למרות שניתן לחטוף מאפייני מערכת כדי לעבור את התשומות שלנו, עלינו להימנע מלעשות זאת.

בואו נראה את המאפיינים האלה בפעולה. ראשית, אנו מגדירים את build.gradle:

להחיל תוסף: "java" תיאור = "דוגמאות ארגומנטים של שורת הפקודה הדרגתי" property taskTypes () {doLast {if (project.hasProperty ("args")) {println "טיעון הקלט שלנו עם מאפיין הפרויקט [" + project.getProperty (" args ") +"] "} println" ארגומנט הקלט שלנו עם מאפיין המערכת ["+ System.getProperty (" args ") +"] "}} 

שימו לב שאנחנו קוראים אותם אחרת במשימה שלנו.

אנחנו עושים זאת בגלל פּרוֹיֶקט.getProperty () זורק א חסר נכס נכס במקרה שהרכוש שלנו אינו מוגדר.

בניגוד למאפייני הפרויקט, System.getProperty () מחזירה א ריק ערך במקרה שהנכס אינו מוגדר.

לאחר מכן, בוא נפעיל את המשימה ונראה את הפלט שלה:

$ ./gradlew propertyTypes -Dargs = lorem -Pargs = ipsum> משימה: cmd-line-args: propertyTypes ארגומנט הקלט שלנו עם מאפיין הפרויקט [ipsum] ארגומנט הקלט שלנו עם מאפיין המערכת [lorem] 

3. העברת טיעונים בשורת הפקודה

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

3.1. העברת טיעונים ליישומי Java

במדריך קודם הסברנו כיצד להריץ שיעורים עיקריים בג'אווה מ- Gradle. בואו ונבנה על זה ונראה איך נוכל גם להעביר טיעונים.

ראשית, בואו השתמש בתוסף היישומים שלנו build.gradle:

להחיל תוסף: "java" להחיל תוסף: "יישום" תיאור = "Gradle שורת פקודה ארגומנטים דוגמאות" // הצהרות קודמות ext.javaMain יישום {mainClassName = javaMainClass} 

עכשיו, בואו נסתכל על המעמד הראשי שלנו:

class class MainClass {public static void main (String [] args) {System.out.println ("דוגמה של ארגומנטים בשורת הפקודה Gradle"); עבור (String arg: args) {System.out.println ("Got argument [" + arg + "]"); }}} 

לאחר מכן, בואו נפעיל את זה בכמה טיעונים:

$ ./gradlew: cmd-line-args: run --args = "lorem ipsum dolor"> משימה: cmd-line-args: הפעל דוגמה לארגומנטים של שורת הפקודה Gradle יש ארגומנט [lorem] קיבל ארגומנט [ipsum] קיבל ארגומנט ]

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

זהו עטיפה נחמדה שמספק תוסף היישום. למרות זאת, זה זמין רק מ- Gradle 4.9 ואילך.

בואו נראה איך זה ייראה באמצעות א JavaExec מְשִׁימָה.

ראשית, עלינו להגדיר זאת ב שלנו build.gradle:

ext.java ראשי אם (project.hasProperty ("args")) {ext.cmdargs = project.getProperty ("args")} אחר {ext.cmdargs = ""} משימה cmdLineJavaExec (סוג: JavaExec) {group = "ביצוע" תיאור = "הפעל את המחלקה הראשית עם JavaExecTask" classpath = sourceSets.main.runtimeClasspath main = javaMainClass args cmdargs.split ()} 

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

מכיוון שזה מכיל את כל הטיעונים כמחרוזת אחת, אנו אז להשתמש ב לְפַצֵל שיטה להשגת מערך טיעונים.

הבא, אנחנו העבירו מערך זה ל טוען רכוש שלנו JavaExec מְשִׁימָה.

בואו נראה מה קורה כאשר אנו מפעילים משימה זו, מעבירים את מאפייני הפרויקט עם ה- -P אוֹפְּצִיָה:

$ ./gradlew cmdLineJavaExec -Pargs = "lorem ipsum dolor"> משימה: cmd-line-args: cmdLineJavaExec Gradle שורת פקודה דוגמא טענה ארגומנט [lorem] קיבל טיעון [ipsum] קיבל טיעון [dolor] 

3.2. העברת טיעונים ליישומים אחרים

במקרים מסוימים, נרצה להעביר כמה ויכוחים ליישום צד שלישי מ- Gradle.

למרבה המזל, אנחנו יכולים השתמש בגנרי יותר ביצוע מְשִׁימָה לעשות זאת:

אם (project.hasProperty ("args")) {ext.cmdargs = project.getProperty ("args")} אחר {ext.cmdargs = "ls"} משימה cmdLineExec (סוג: Exec) {group = "ביצוע" תיאור = "הפעל תוכנית חיצונית עם ExecTask" commandLine cmdargs.split ()} 

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

בוא נראה איך להפעיל את זה עבור ls פקודה:

$ ./gradlew cmdLineExec -Pargs = "ls -ll"> משימה: cmd-line-args: cmdLineExec סה"כ 4 משתמשים drwxr-xr-x 1 1049089 0 ספטמבר 1 17:59 bin drwxr-xr-x משתמש 1 1049089 0 ספטמבר 1 18:30 build -rw-r - r-- משתמש אחד 1049089 1016 3 בספטמבר 15:32 build.gradle drwxr-xr-x משתמש 1 1049089 0 ספטמבר 17:52 src

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

4. מסקנה

במדריך מהיר זה ראינו כיצד להעביר טיעוני קלט מ- Gradle.

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

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

כרגיל, ניתן למצוא את הקוד השלם ב- GitHub.


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