Maven לפרוס לנקסוס

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

במאמר קודם דנתי כיצד פרויקט Maven יכול להתקין באופן מקומי צנצנת של צד שלישי שטרם נפרסה ב- Maven Central (או באף אחד ממאגרים גדולים אחרים שמתארחים בציבור).

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

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

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

2. דרישות Nexus ב pom.xml

על מנת שמאבן יוכל לפרוס את החפצים שהיא יוצרת ב- חֲבִילָה בשלב הבנייה, עליו להגדיר את מידע המאגר היכן ייפרסו החפצים הארוזים באמצעות distributionManagement אֵלֵמֶנט:

  nexus-snapshots // localhost: 8081 / nexus / content / repositories / snapshots 

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

3. תוספים

כברירת מחדל, Maven מטפל במנגנון הפריסה דרך ה- תוסף maven-deploy - זה ממופה ל פְּרִיסָה שלב של מחזור החיים של Maven המוגדר כברירת מחדל:

 maven-deploy-plugin 2.8.1 ברירת מחדל - deploy deploy 

ה תוסף maven-deploy זו אפשרות קיימא להתמודד עם משימת הפריסה לחפצים של פרויקט לנקסוס, אך היא לא נבנתה כדי לנצל באופן מלא את מה שיש לנקסוס להציע. בגלל עובדה זו, Sonatype בנתה תוסף ספציפי ל- Nexus - ה- nexus-staging-maven-plugin - שנועדה למעשה לנצל את מלוא הפונקציונליות המתקדמת יותר שיש לנקסוס להציע - פונקציונליות כמו בימוי.

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

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

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

 org.apache.maven.plugins maven-deploy-plugin $ {maven-deploy-plugin.version} נכון 

כעת אנו יכולים להגדיר:

 org.sonatype.plugins nexus-staging-maven-plugin 1.5.1 ברירת מחדל-פריסה לפרוס nexus // localhost: 8081 / nexus / true 

ה לפרוס המטרה של התוסף ממופה ל- לפרוס שלב מבנה Maven.

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

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

4. הגלובלי settings.xml

פריסה לנקסוס היא א פעולה מאובטחת - ו פְּרִיסָה משתמש קיים למטרה זו מחוץ לקופסה בכל מופע Nexus.

קביעת תצורה של Maven עם האישורים של זה פְּרִיסָה המשתמש, כך שהוא יכול לקיים אינטראקציה נכונה עם Nexus, לא יכול להיעשות ב- pom.xml של הפרויקט. הסיבה לכך היא התחביר של פום אינו מאפשר זאת, שלא לדבר על העובדה שה- פום יכול להיות חפץ ציבורי, ולכן לא מתאים מאוד להחזיק מידע אישורי.

את אישורי השרת יש להגדיר ב- Maven העולמי setting.xml:

  פריסת תמונות של Nexus the_pass_for_ the_poyment_user 

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

5. תהליך הפריסה

ביצוע תהליך הפריסה הוא משימה פשוטה:

mvn נקי לפרוס -Dmaven.test.skip = נכון

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

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

אם הפעלת פקודה אחת, ניתן לשמור על בדיקות פעיל להפעלה לפני פְּרִיסָה שלב מבצע:

mvn נקי לפרוס

6. מסקנה

זהו פתרון פשוט, אך יעיל במיוחד לפריסה לחפצי Maven ל- Nexus.

זה גם די דעתני - nexus-staging-maven-plugin משמש במקום ברירת המחדל תוסף maven-deploy; פונקציונליות ההיערכות מושבתת וכו '- הבחירות הללו הן שהופכות את הפתרון לפשוט ופרקטי.

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

לבסוף נדון בתהליך השחרור במאמר הבא.


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