השתמש בגרסה האחרונה של תלות במייבן

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

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

במדריך זה נלמד כיצד לנצל את התוסף Maven של Versions כדי לעדכן את התלות שלנו.

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

2. תחביר טווח גרסאות Maven

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

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

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

2.1. תחביר מיושן

Maven2 גם סיפק שני ערכי מטא-גרסה מיוחדים כדי להשיג את התוצאה: הכי מאוחר ו לְשַׁחְרֵר.

הכי מאוחר מחפש אחר הגרסה החדשה ביותר האפשרית לְשַׁחְרֵר מכוון לגרסה האחרונה שאינה SNAPSHOT.

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

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

3. גרסאות תוסף Maven

תוסף Versions Maven הוא הדרך הסטנדרטית בפועל לטפל בניהול גרסאות בימינו.

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

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

3.1. מקרה המבחן

לפני שמתחילים, בואו נגדיר את מקרה הבדיקה שלנו:

  • שלוש שחרורים עם גרסה מקודדת
  • שחרור אחד עם גרסת נכס, ו-
  • תמונה אחת
  commons-io commons-io 2.3 org.apache.commons commons-collection4 4.0 org.apache.commons commons-lang3 3.0 org.apache.commons commons-compress $ {commons-compress-version} commons-beanutils commons-beanutils 1.9.1 -SNAPSHOT 1.15 

לבסוף, בואו נכלול חפץ מהתהליך בעת הגדרת התוסף:

   org.codehaus.mojo versions-maven-plugin 2.7 org.apache.commons: commons-collection4 

4. הצגת עדכונים זמינים

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

גרסאות mvn: עדכוני תלות תצוגה

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

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

5. עדכון התלות

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

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

5.1. המרת SNAPSHOTS ל- RELEASEs

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

אנחנו יכולים להשתמש גרסאות: שימוש-משחרר כדי לבדוק אם הכתב RELEASE פורסם, ועוד יותר כדי להמיר את ה- SNAPSHOT שלנו באותה תקופה:

גרסאות mvn: שחרור שימוש 

5.2. מתעדכן לשחרור הבא

אנו יכולים להעביר כל תלות שאינה SNAPSHOT לגרסה הקרובה ביותר שלה עם גרסאות: השתמש במהדורות הבאות:

גרסאות mvn: השתמש במהדורות הבאות 

אנו יכולים לראות בבירור שהתוסף עודכן commons-io, commons-lang3, ואפילו נחושת-בוטנים, שאינו SNAPSHOT יותר, לגרסתם הבאה.

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

5.3. מעדכן למהדורה האחרונה

עדכון כל תלות שאינה SNAPSHOT למהדורה האחרונה שלה פועל באותו אופן, פשוט משנה את המטרה ל- גרסאות: השתמש במהדורות האחרונות:

גרסאות mvn: השתמש במהדורות האחרונות 

6. סינון גרסאות לא רצויות

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

 org.codehaus.mojo version-maven-plugin 2.7 //www.mycompany.com/maven-version-rules.xml 

ראוי לציון, יכול גם להתייחס לקובץ מקומי:

file: ///home/andrea/maven-version-rules.xml 

6.1. התעלמות מגרסאות ברחבי העולם

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

  . * - בטא 

6.2. התעלמות מגרסאות על פי כלל

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

    . * - שחרור 2.1.0 

7. מסקנה

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

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

כדי לראות את זה בפעולה, פשוט הורד את הפרויקט והפעל במסוף (או ב- Git Bash אם אתה משתמש ב- Windows):

./run-the-demo.sh