אודות
ב-1C אנחנו מפתחים לא רק פלטפורמה על и , אלא גם יישומי Java - בפרט סביבת הפיתוח החדשה מבוסס על Eclipse ושרת מסנג'ר משולב עמוק עם הפלטפורמה - .
כניסה
לרוב אנו משתמשים ב-maven כמערכת בנייה ליישומי Java, ובמאמר קצר זה נרצה לדבר על אחת הבעיות שהיינו צריכים להתמודד עמן בתהליך ארגון הפיתוח, ועל הגישה שאפשרה לנו להתגבר על זה. בְּעָיָה.
דרישות קדם וזרימת עבודה
בשל המאפיינים הספציפיים של הפיתוח בפרויקטים של מייבן שלנו, אנו משתמשים בלא מעט מודולים, תלות ופרויקטים ילדים. מספר קבצי פום בעץ אחד יכול להיות בעשרות או אפילו מאות.

זה נראה: לא נורא, הם יצרו את זה פעם אחת ושכחו מזה. אם אתה צריך לשנות או להוסיף משהו בכל הקבצים בו-זמנית, יש הרבה כלים נוחים בעורכים וב-IDE. מהו השינוי הרגיל הנפוץ ביותר ל-pom.xml? אנו מאמינים כי שינויים בגרסאות הפרויקט והתלות. אולי מישהו ירצה להתווכח עם זה, אבל זה בדיוק המצב אצלנו. הסיבה נעוצה בעובדה שיחד עם הליבה, אנו מפתחים בו-זמנית רבות מספריות משלנו, ולשעתוק מתמשך של תוצאות בנייה ובדיקה, השימוש בתמונות snapshot אינו נראה לנו כגישה נוחה. מסיבה זו, יש צורך להעלות את מספר הגרסה בפרויקטים עם כל בנייה.
כמו כן, מעת לעת, מפתח צריך לבנות סניף משלו של ספרייה ולבדוק את הפונקציונליות שלה מול כל התלות, שעבורן הוא צריך לשנות ידנית את הגרסה של כולן.
פתרון ראשוני
עם שינויים תכופים ומרובים כל כך בגרסה, אני רוצה לפשט ולהפוך את התהליך לאוטומטי בתוך CI. זה המקום שבו תוסף נוח ומוכר בא להציל. גרסאות-maven-plugin - חבר אותו והפעל אותו
mvn -N versions:set -DnewVersion=2.0.1
ומייבן יעשה הכל כמו שצריך: הוא ירוץ בהיררכיה מלמעלה למטה, ויחליף את כל הגרסאות - יופי! כעת כל שנותר הוא להעלות בקשת משיכה, עמיתים יבדקו את השינויים, ותוכלו להצטרף במהירות לתא המטען. בִּמְהִירוּת? לא משנה איך זה. כמה מאות pom.xml לבדיקה, וזה לא סופר את הקוד. בנוסף, אף אחד לא בטוח מהתנגשויות מיזוג עם מספר כה גדול של קבצים שהשתנו. יש לציין כאן שבתהליך ה-CI, שינויים בגרסה מתרחשים באופן אוטומטי יחד עם שינויים בפונקציונליות, ולא איכשהו בנפרד.
תכונות חדשות
לזמן מה נרגענו, והתפטרנו, חיינו כך עד שהחבר'ה מ החל מגרסה 3.5.0-beta-1, Maven לא כללה תמיכה במה שנקרא "מצייני מיקום". המהות של תחליפים אלה היא זו pom.xml במקום אינדיקציה ספציפית של גרסת הפרויקט, נעשה שימוש במשתנים ${revision}, ${sha1} и ${changelist}. הערכים של מאפיינים אלה עצמם נקבעים באלמנטנכסים>, או שניתן להגדיר אותם באמצעות מאפיין מערכת
mvn -Drevision=2.0.0 חבילה נקייה
ערכי מאפייני המערכת מקבלים עדיפות על פני ערכים המוגדרים בנכסים>.
ההורה
4.0.0
org.apache
אפאצ'י
18
org.apache.maven.ci
ci-הורה
CI פרנדלי ראשון
${revision}${sha1}${changelist}
...
1.3.1
- תמונת מצב
צאֱצא
4.0.0
org.apache.maven.ci
ci-הורה
${revision}${sha1}${changelist}
org.apache.maven.ci
סי-ילד
...
אם אתה רוצה לבנות גרסה 2.0.0-SNAPSHOT, אז פשוט השתמש
mvn -Drevision=2.0.0 חבילה נקייה
אם אתה רוצה לעשות שחרור, אז פשוט אפס את SNAPSHOT
mvn -Dchangelist= חבילה נקייה
*הדוגמאות לעיל לקוחות מ באתר Maven Apache Project
מציאות קשה
הכל טוב ובריא, הגיע הזמן להרגיש תחושת סיפוק, אבל לא. מסתבר ששיטה זו לא תעבוד עבור התקנה ופריסה, מכיוון שהיא לא תוחלף בתיאורי החפצים המתפרסמים במאגר ${revision} על משמעותו ומאבן כבר לא יבין על מה מדובר.
org.apache
אפאצ'י
${revision}
אור בקצה מנהרה
אנחנו צריכים לחפש פתרון לבעיה. יכול היה להציל את המצב . תוסף זה פותר את כל המשתנים ב-pom, אך בו זמנית חותך מידע רב אחר שדרוש רק במהלך ההרכבה ואינו נחוץ בעת ייבוא חפצים שפורסמו לפרויקטים אחרים. התוסף גם "מיישר" את כל התלות של הורה-ילד, וכתוצאה מכך, אתה מקבל פום שטוח הכולל את כל מה שאתה צריך. אי הנוחות הייתה שזה גוזר יותר מדי "תוספת", מה שלא התאים לנו בכלל. לאחר לימוד המידע על פיתוח התוסף הזה, התברר שאנחנו לא היחידים ביקום, ובאוגוסט 2018 נוצרה בקשת pull-request ב-Github במאגר התוספים מתוך רצון לאפשר זאת. לקבוע בעצמנו איך "לקלקל" את pom.xml. המפתחים הקשיבו לקולות הסובלים, וכבר בדצמבר, עם יציאת הגרסה החדשה 1.1.0, הופיע מצב חדש, resolveCiFriendliesOnly, בתוסף flatten-maven-מתאים יותר מתמיד - הוא עוזב pom.xml כפי שהוא, למעט האלמנט ומאפשר ${revision}, ${sha1} и ${changelist}.
הוספת תוסף לפרויקט
org.codehaus.mojo
flatten-maven-plugin
1.1.0
נָכוֹן
resolveCiFriendliesOnly
לְשַׁטֵחַ
משאבי תהליכים
לְשַׁטֵחַ
לשטוח.לנקות
לְנַקוֹת
לְנַקוֹת
בוצע!
סוף טוב
מעתה והלאה, כדי לשנות את הגרסה של הפרויקט כולו וליידע את כל התלויות עליו, אנחנו רק צריכים לערוך את האלמנטרביזיה> רק בשורש pom.xml. לא מאה או שניים מהקבצים האלה עם אותו שינוי מגיעים לביקורת, אלא אחד. ובכן, אין צורך להשתמש גרסאות-maven-plugin.
מקור: www.habr.com
