התקן צנצנת מקומית עם Maven

1. הבעיה והאפשרויות

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

כשזה קורה, יש כמה אפשרויות:

  • לנגוס בכדור ולהתקין מלא ניהול מאגר פיתרון כמו Nexus
  • נסה להעלות את החפץ לאחד ממאגרים ציבוריים מכובדים יותר
  • התקן את החפץ באופן מקומי באמצעות תוסף maven

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

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

זה משאיר את האפשרות השלישית - הוספת החפץ בבקרת המקור ושימוש בתוסף maven - במקרה זה, התוסף maven-install ל- התקן אותו באופן מקומי לפני שתהליך הבנייה זקוק לו. זו ללא ספק האפשרות הקלה והאמינה ביותר שיש.

2. התקן צנצנת מקומית עם maven-install-plugin

נתחיל בתצורה המלאה הנחוצה להתקנת החפץ במאגר המקומי שלנו:

 org.apache.maven.plugins maven-install-plugin 2.5.1 org.somegroup someartifact 1.0 jar $ {basedir} /dependences/someartifact-1.0.jar אמת install-jar-lib-install קובץ אימות 

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

2.1. מידע החפץ

מידע החפץ מוגדר כחלק מה- אֵלֵמֶנט. התחביר בפועל דומה מאוד להכריז על התלות - א groupId, artifactId ו גִרְסָה אלמנטים.

החלק הבא של התצורה דורש הגדרה של אריזה של החפץ - זה מוגדר כ- קַנקַן.

לאחר מכן, עלינו לספק את מקום של קובץ ה- jar שצריך להתקין בפועל - זה יכול להיות נתיב קבצים מוחלט או שהוא יכול להיות יחסי באמצעות ה- נכסים זמינים ב Maven. במקרה זה, $ {basedir} המאפיין מייצג את שורש הפרויקט, כלומר המיקום שבו pom.xml הקובץ קיים. משמעות הדבר היא כי someartifact-1.0.jar הקובץ צריך להיות ממוקם ב / תלות / ספריה מתחת לשורש.

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

2.2. ההוצאה להורג

הביצוע של קובץ התקנה מטרה קשור ל לְאַמֵת שלב ממחזור החיים הסטנדרטי של Maven. ככזה, לפני שתנסה לקמפל - תצטרך להריץ את שלב האימות במפורש:

אימות mvn

לאחר שלב זה, האוסף הסטנדרטי יעבוד:

mvn נקי להתקין

ברגע שלב ההידור אכן מתבצע, שלנו someartifact-1.0.jar מותקן כהלכה במאגר המקומי שלנו, בדיוק כמו כל חפץ אחר שייתכן שאוחזר ממרכז Maven עצמו.

2.3. יצירת א POM לעומת אספקת POM

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

ה createPom אפשרות ב קובץ התקנה המטרה צריכה להספיק לחפצים מסוג זה:

נָכוֹן

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

שקר $ {basedir} /dependencies/someartifact-1.0.pom

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

3. מסקנה

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


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