כיצד ליצור JAR הפעלה עם Maven

1. הקדמה

במאמר מהיר זה נתמקד בו אריזה של פרויקט Maven לקובץ ג'אר להפעלה.

בדרך כלל, בעת יצירת a קַנקַן קובץ, אנו רוצים לבצע אותו בקלות, ללא שימוש ב- IDE; לשם כך, נדון בתצורה וביתרונות / חסרונות של שימוש בכל אחת מהגישות הללו ליצירת ההפעלה.

2. תצורה

על מנת ליצור הפעלה קַנקַן, איננו זקוקים לתלות נוספות. אנחנו רק צריכים ליצור פרויקט Maven Java, ולקבל לפחות שיעור אחד עם ה- רָאשִׁי(…) שיטה.

בדוגמה שלנו, יצרנו מחלקת Java בשם ExecutableMavenJar.

עלינו גם לוודא כי שלנו pom.xml מכיל את האלמנטים הבאים:

4.0.0 com.baeldung core-java 0.1.0-SNAPSHOT צנצנת

ההיבט החשוב ביותר כאן הוא הסוג - יצירת הפעלה קַנקַן, בדוק שוב התצורה משתמשת ב- קַנקַן סוּג.

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

2.1. תצורה ידנית

נתחיל בגישה ידנית - בעזרת ה- תוסף maven-dependency.

ראשית, נעתיק את כל התלות הנדרשת לתיקיה שנציין:

 org.apache.maven.plugins maven-dependency-plugin העתקות-תלות הכנת חבילת העתקות-תלות $ {project.build.directory} / libs 

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

במקרה שלנו, ניצור תיקיה בשם libs, בתוך ספריית בניית הפרויקטים (שהיא בדרך כלל ה- יַעַד תיקיה).

בשלב השני, אנו הולכים ליצור הפעלה ונתיב כיתתי מודע קַנקַן, עם הקישור לתלות שהועתקו בשלב הראשון:

 org.apache.maven.plugins maven-jar-plugin true libs / com.baeldung.executable.ExecutableMavenJar 

החלק החשוב ביותר של הנ"ל הוא לְהַפְגִין תְצוּרָה. אנו מוסיפים מסלול כיתה, עם כל התלות (תיקיה libs /), ולספק את המידע על המעמד הראשי.

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

היתרונות והחסרונות של גישה זו הם:

  • מקצוענים - תהליך שקוף, שבו אנו יכולים לציין כל שלב
  • חסרונות - ידנית, התלות הן מחוץ לגמר קַנקַן, כלומר ההפעלה שלך קַנקַן יפעל רק אם libs התיקיה תהיה נגישה וגלויה עבור קַנקַן

2.2. תוסף הרכבה של Apache Maven

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

המטרה העיקרית בתוסף ההרכבה היא יחיד יעד - משמש ליצירת כל המכלולים (כל היעדים האחרים יוצאו משימוש ויוסרו במהדורה עתידית).

בואו נסתכל על התצורה ב pom.xml:

 org.apache.maven.plugins חבילת maven-assemblage-plugin com.baeldung.executable יחידה צנצנת-עם-תלות 

בדומה לגישה הידנית, עלינו לספק את המידע על המעמד הראשי; ההבדל הוא שתוסף הרכבה של Maven יעתיק אוטומטית את כל התלות הנדרשת ל- קַנקַן קוֹבֶץ.

בתוך ה descriptor שוניות חלק מקוד התצורה, סיפקנו את השם שיתווסף לשם הפרויקט.

הפלט בדוגמה שלנו ייקרא בשם core-java-jar-with-dependencies.jar.

  • מקצוענים - תלות בתוך קַנקַן קובץ, קובץ אחד בלבד
  • חסרונות - שליטה בסיסית באריזת החפץ שלך, למשל, אין תמיכה בהעברת כיתות

2.3. תוסף צל של אפאצ'י מייבן

התוסף של Apache Maven Shade מספק את היכולת לארוז את החפץ ב- צנצנת אובר, המורכב מכל התלות הנדרשת להפעלת הפרויקט. יתר על כן, הוא תומך בהצללה - כלומר לשנות שם - לחבילות של חלק מהתלות.

בואו נסתכל על התצורה:

 org.apache.maven.plugins maven-shade-plugin צל נכון com.baeldung.executable.ExecutableMavenJar 

ישנם שלושה חלקים עיקריים בתצורה זו:

ראשון, מסמן את כל התלות שיש לארוז ב קַנקַן.

שנית, עלינו לציין את יישום השנאי; השתמשנו בתקן הסטנדרטי בדוגמה שלנו.

לבסוף, עלינו לציין את המחלקה העיקרית של היישום שלנו.

שם קובץ הפלט ייקרא core-java-0.1.0-SNAPSHOT-shaded.jar, איפה core-java הוא שם הפרויקט שלנו, ואחריו גרסת תמונת מצב ושם התוסף.

  • מקצוענים - תלות בתוך קַנקַן קובץ, שליטה מתקדמת באריזת החפץ שלך, עם הצללה והעתקת כיתות
  • חסרונות - תצורה מורכבת (במיוחד אם אנו רוצים להשתמש בתכונות מתקדמות)

2.4. תוסף אחד של Jar Maven

אפשרות נוספת ליצירת הפעלה קַנקַן הוא פרויקט הצנצנת האחת.

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

בואו נסתכל על התצורה:

 com.jolira onejar-maven-plugin org.baeldung.executable. ExecutableMavenJar נכון $ {project.build.finalName}. $ {Project.packaging} צנצנת אחת 

כפי שמוצג בתצורה, עלינו לציין את המחלקה הראשית ולצרף את כל התלות לבנות באמצעות attachToBuild= נכון.

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

  • מקצוענים - מודל משלחת נקי, מאפשר שיעורים להיות ברמה העליונה של ה- One Jar, תומך חיצוני צנצנות ויכול לתמוך בספריות מקומיות
  • חסרונות - לא נתמך באופן פעיל מאז 2012

2.5. תוסף Spring Boot Maven

לבסוף, הפיתרון האחרון שנבדוק הוא תוסף Spring Boot Maven.

זה מאפשר לארוז הפעלה קַנקַן אוֹ מִלחָמָה ארכיונים והפעל יישום "במקום".

כדי להשתמש בו עלינו להשתמש לפחות בגרסת Maven 3.2. התיאור המפורט זמין כאן.

בואו נסתכל על התצורה:

 org.springframework.boot spring-boot-maven-plugin repackage spring-boot com.baeldung.executable.ExecutableMavenJar 

ישנם שני הבדלים בין תוסף Spring לבין האחרים. ראשית, מטרת הביצוע נקראת אריזה מחדש, והמסווג נקרא קפיץ-מגף.

לידיעתך, איננו זקוקים ליישום Spring Boot על מנת להשתמש בתוסף זה.

  • מקצוענים - תלות בתוך a קַנקַן קובץ, אתה יכול להריץ אותו בכל מיקום נגיש, שליטה מתקדמת באריזה של החפץ שלך, עם אי הכללת תלות מה- קַנקַן תיק וכו ', אריזה של מִלחָמָה קבצים גם כן
  • חסרונות - מוסיף שיעורים הקשורים לאביב ולאביב אתחול

2.6. יישום אינטרנט עם Tomcat הניתנים להפעלה

בחלק האחרון, אנו רוצים לסקר את הנושא של יישום אינטרנט עצמאי, שארוז בתוך jar קוֹבֶץ. על מנת לעשות זאת, עלינו להשתמש בתוסף שונה, המיועד ליצירת קבצי צנצנות להפעלה:

 org.apache.tomcat.maven tomcat7-maven-plugin 2.0 tomcat-run-exec-war-only package / false webapp.jar utf-8 

ה מטרה מוגדר כ- למלחמה בלבד, נָתִיב לשרת שלך מוגדר בפנים תְצוּרָה תג, עם מאפיינים נוספים, כמו finalName, ערכה וכו 'לבנות jar, לרוץ חבילת איש, שתביא ליצירה webapp.jar שלך יַעַד מַדרִיך. לרוץ

כדי להריץ את היישום, פשוט כתוב זאת במסוף שלך: java -jar target / webapp.jar ונסה לבדוק זאת על ידי ציון ה- מקום אירוח מקומי: 8080/ בדפדפן.

  • מקצוענים - בעל קובץ אחד, קל לפריסה ולהפעלה
  • חסרונות - גודל הקובץ גדול בהרבה, בגלל אריזת ההפצה המשובצת של Tomcat בתוך war קוֹבֶץ

שים לב שזו הגרסה האחרונה של תוסף זה, התומך בשרת Tomcat7. כדי להימנע משגיאות, אנא בדוק שיש לתלות שלך ב- Servlets תְחוּם נקבע כ בתנאיאחרת, יהיה סכסוך במערכת זמן ריצה של הפעלה קַנקַן:

 javax.servlet javax.servlet-api מסופק 

3. מסקנה

במאמר זה תיארנו דרכים רבות ליצירת קובץ הפעלה קַנקַן עם תוספי Maven שונים.

את היישום המלא של מדריך זה ניתן למצוא בפרויקטים אלה (צנצנת ההפעלה) וזו (מלחמת ההפעלה) של Github.

איך לבדוק? על מנת להרכיב את הפרויקט לתכנית הפעלה קַנקַןבבקשה תריץ את מייבן עם חבילה נקייה mvn פקודה.

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

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