הפעל שיטה ראשית של Java באמצעות Gradle

1. הקדמה

במדריך זה נחקור את השיטות השונות להפעלת Java רָאשִׁי שיטה באמצעות Gradle.

2. ג'אווה רָאשִׁי שיטה

ישנן מספר דרכים בהן אנו יכולים להריץ ג'אווה רָאשִׁי שיטה עם Gradle. בואו נסתכל עליהם מקרוב באמצעות תוכנית פשוטה שמדפיסה הודעה לפלט הסטנדרטי:

class class MainClass {public static void main (String [] args) {System.out.println ("להתראות עולם אכזרי ..."); }}

3. פועל באמצעות תוסף היישום

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

נתחיל בהכנסת הדברים הבאים ל build.gradle קוֹבֶץ:

תוספים {id "application"} החלת תוסף: "java" ext {javaMain} יישום {mainClassName = javaMainClass}

התוסף מייצר אוטומטית משימה שנקראת לָרוּץ זה רק מחייב אותנו להצביע על ה- רָאשִׁי מעמד. הסגירה בשורה 9 עושה בדיוק את זה, מה שמאפשר לנו להפעיל את המשימה:

~ / work / baeldung / tutorials / gradle-java-exec> ./gradlew run> משימה: הפעל להתראות עולם אכזרי ... בנה הצלחה ב 531 ms 2 משימות שניתן לבצע: 1 מבוצע, 1 עדכני

4. ריצה עם JavaExec מְשִׁימָה

לאחר מכן, בוא נבצע משימה מותאמת אישית להפעלת ה- רָאשִׁי שיטה בעזרת JavaExec סוג משימה:

משימת runWithJavaExec (סוג: JavaExec) {group = "Execution" תיאור = "הפעל את המחלקה הראשית עם JavaExecTask" classpath = sourceSets.main.runtimeClasspath main = javaMainClass}

עלינו להגדיר את רָאשִׁי בכיתה בשורה 5 ובנוסף, ציין את שביל הכיתה. מסלול הכיתה מחושב מתכונות ברירת המחדל של פלט הבנייה ומכיל את הנתיב הנכון שבו ממוקמת המחלקה המהוללת בפועל.

שימו לב שבכל תרחיש, אנחנו השתמש בשם המוסמך במלואו, כולל החבילה רָאשִׁי מעמד.

בואו נשתמש בדוגמה שלנו באמצעות JavaExec:

~ / work / baeldung / tutorials / gradle-java-exec> ./gradlew runWithJavaExec> משימה: runWithJavaExec להתראות עולם אכזרי ... בנה הצלחה ב 526 ms 2 משימות שניתן לבצע: 1 מבוצע, 1 עדכני

5. ריצה עם ביצוע מְשִׁימָה

לבסוף, אנו יכולים לבצע את שלנו רָאשִׁי בכיתה באמצעות הבסיס ביצוע סוג משימה. מכיוון שאפשרות זו מציעה לנו אפשרות להגדיר את הביצוע במספר דרכים, בואו נבצע שלוש משימות מותאמות אישית ונדון בהן בנפרד.

5.1. פועל מפלט הבניין המהודר

ראשית, אנו יוצרים מותאם אישית ביצוע משימה שמתנהגת באופן דומה ל JavaExec:

משימת runWithExec (סוג: Exec) {תלויOn build group = "ביצוע" תיאור = "הפעל את המחלקה הראשית עם ExecTask" commandLine "java", "-classpath", sourceSets.main.runtimeClasspath.getAsPath (), javaMainClass}

אנו יכולים להפעיל כל הפעלה (במקרה זה Java) ולהעביר את הטיעונים הדרושים להפעלתה.

אנו מגדירים את מסלול הכיתה ומצביעים על שלנו רָאשִׁי בכיתה בשורה 5, ואנחנו גם מוסיפים תלות ב- לִבנוֹת משימה בשורה 2. זה הכרחי, מכיוון שאנחנו יכולים רק להפעיל את המשימה שלנו רָאשִׁי כיתה לאחר הידורו:

~ / work / baeldung / tutorials / gradle-java-exec> ./gradlew runWithExec> משימה: runWithExec להתראות עולם אכזרי ... בנה הצלחה ב 666ms 6 משימות לפעולה: 6 בוצע 

5.2. רץ מצנצנת פלט

הגישה השנייה מסתמכת על אריזת הצנצנת של היישום הקטן שלנו:

משימת runWithExecJarOnClassPath (סוג: Exec) {dependsOn jar group = "Execution" תיאור = "הפעל את mainClass מצנצנת הפלט בכיתה עם ExecTask" commandLine "java", "-classpath", jar.archiveFile.get (), javaMainClass} 

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

~ / work / baeldung / tutorials / gradle-java-exec> ./gradlew runWithExecJarOnClassPath> משימה: runWithExecJarOnClassPath להתראות עולם אכזרי ... בנה הצלחה ב 555 ms 3 משימות לפעולה: 3 בוצע

5.3. פועל מתוך צנצנת פלט להוצאה לפועל

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

jar {manifest {attributes ("Main-Class": javaMainClass)}} משימת runWithExecJarExecutable (סוג: Exec) {dependsOn jar group = "Execution" תיאור = "הפעל את צנצנת ההפעלה של הפלט עם הפקודה ExecTask", "java", "-jar ", jar.archiveFile.get ()} 

פה, אנחנו כבר לא צריכים לציין את מסלול הכיתהואנחנו יכולים פשוט להריץ את הצנצנת:

~ / work / baeldung / tutorials / gradle-java-exec> ./gradlew runWithExecJarExecutable> משימה: runWithExecJarExecutable להתראות עולם אכזרי ... בנה הצלחה ב 572 ms 3 משימות הניתנות לפעולה: 3 בוצע

6. מסקנה

במאמר זה בחנו את הדרכים השונות להפעלת Java רָאשִׁי שיטה באמצעות Gradle.

מחוץ לקופסה, תוסף היישום מספק משימה הניתנת להגדרה מינימלית להפעלת השיטה שלנו. ה JavaExec סוג המשימות מאפשר לנו להריץ את רָאשִׁי מבלי לציין תוספים כלשהם.

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

כרגיל, קוד המקור של הדרכה זו זמין ב- GitHub.