פרויקט רב מודולים עם Maven

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

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

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

2. פרויקט הרב מודולים של מייבן

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

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

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

3. יתרונות השימוש ברב-מודולים

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

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

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

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

4. הורה POM

מייבן תומך בירושה באופן ש לכל קובץ pom.xml יש את ה- POM ההורה המשתמע, זה נקרא Super POM והוא יכול להיות ממוקם בבינארי של Maven. שני קבצים אלה מוזגו על ידי Maven ויוצרים את ה- POM האפקטיבי.

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

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

5. תת מודולים

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

6. בניית האפליקציה

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

אפליקציה זו תורכב משלושה מודולים שייצגו:

  • ה הליבה חלק מהתחום שלנו
  • רשת שֵׁרוּת מתן כמה ממשקי API של REST
  • א webapp המכיל נכסי אינטרנט הפונים למשתמש מסוג כלשהו

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

6.1. יצירת POM של ההורה

ראשית, בואו ניצור פרויקט הורים:

ארכיטיפ mvn: צור -DgroupId = org.baeldung -DartifactId = פרויקט אב

ברגע שההורה נוצר, עלינו לפתוח את pom.xml קובץ שנמצא בספריית ההורים ושנה את האריזה ל- pom.

פום

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

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

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

6.2. יצירת תת מודולים

כמו POM ההורה שלנו נקרא פרויקט הורים, עלינו לוודא שאנחנו נמצאים בספריית ההורים והפעלנו לִיצוֹר פקודות:

פרויקט אב של cd mvn ארכיטיפ: ליצור -DgroupId = org.baeldung -DartifactId = ליבה mvn archetype: ליצור -DgroupId = org.baeldung -DartifactId = שירות mvn ארכיטיפ: ליצור -DgroupId = org.baeldung -DartifactId = webapp

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

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

 שירות ליבה 

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

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

יתר על כן, כור Maven ינתח את הפרויקט שלנו ויבנה אותו לפי הסדר הנכון. אז אם שלנו webapp המודול תלוי ב השירות המודול, Maven יבנה תחילה את שֵׁרוּת, אז ה webapp.

אחרי הכל, אם אנו רוצים לחלוק את כל התצורה עם תת המודולים שלנו, שלהם pom.xml קבצים, נצטרך להכריז על ההורה:

 פרויקט הורים org.baeldung 1.0-SNAPSHOT 

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

6.3. בניית הפרויקט

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

חבילת mvn

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

[INFO] סורק אחר פרויקטים ... [INFO] -------------------------------------- ---------------------------------- [INFO] סדר בניית כור: [INFO] פרויקט אב [INFO] שירות ליבה [INFO] [INFO] webapp ... [INFO] סיכום הכור: פרויקט הורים [INFO] .......................... ........... הצלחה [0.140 שניות] [INFO] ליבת .............................. ................. הצלחה [2.195 שניות] [INFO] שירות ........................ .................... הצלחה [0.767 שניות] [INFO] אפליקציית אינטרנט ..................... ........................ הצלחה [0.572 שניות] [INFO] ------------------ -------------------------------------------------- ---- [INFO] הצלחה בונה [INFO] -------------------------------------- ----------------------------------

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

7. מסקנה

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

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

כל דוגמאות הקוד ב- Baeldung בנויות באמצעות Maven, כך שתוכלו לבדוק בקלות באתר הפרויקט GitHub שלנו כדי לראות תצורות שונות של Maven.


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