אוטומט את תהליך הבנייה שלך באמצעות Java ו- Ant

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

מדוע אני זקוק לתהליך בנייה מוגדר?

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

מה זה נמלה?

נמלה היא כלי תסריטים שאינו תלוי בפלטפורמה המאפשר לכם לבנות את סקריפטים לבנות בצורה זהה לזה של הכלי "make" ב- C או C ++. אתה יכול להשתמש במספר גדול של משימות מובנות ב- Ant ללא כל התאמה אישית. חלק מהמשימות החשובות ביותר מוצגות בטבלה הבאה, אך מוסברות בפירוט רב יותר בדוגמה הבאה.

להלן מספר פקודות שימושיות שנבנות בהפצת הנמלים.

פקודה תיאור
נְמָלָה משמש לביצוע תהליך נמלים נוסף מתוך הנוכחי.
קופידיר משמש להעתקת ספריה שלמה.
העתק משמש להעתקת קובץ יחיד.
Cvs מטפל בחבילות / מודולים שאוחזרו ממאגר CVS.
לִמְחוֹק מוחק קובץ יחיד או את כל הקבצים בספרייה שצוינה וספריות המשנה שלו.
דלתרי מוחק ספריה עם כל הקבצים וספריות המשנה שלה.
ביצוע מבצע פקודת מערכת. כאשר מאפיין os מוגדר, הפקודה מתבצעת רק כאשר Ant מופעלת באחת ממערכות ההפעלה שצוינו.
לקבל מקבל קובץ מכתובת אתר.
קַנקַן צנצנת סט קבצים.
ג'אווה מבצע מחלקה של Java בתוך ה- VM (Ant) הפועל או מזלג VM אחר אם צוין.
ג'אבאק מרכיב עץ מקור בתוך ה- (Ant) VM הפועל.
Javadoc / Javadoc2 מייצר תיעוד קוד באמצעות הכלי javadoc.
מקדיר יוצר מדריך.
תכונה מגדיר נכס (לפי שם וערך), או קבוצת מאפיינים (מקובץ או משאב) בפרויקט.
רמיק מריץ את מהדר ה- rm עבור מעמד מסוים.
טסטמפה מגדיר את המאפיינים DSTAMP, TSTAMP ו- TODAY בפרויקט הנוכחי.
סִגְנוֹן מעבד מערך מסמכים באמצעות XSLT.

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

מה אני צריך כדי להשתמש ב- Ant?

עליך להתקין שלושה רכיבים במחשב שלך כדי להריץ את Ant: JDK, מנתח XML ו- Ant (ראה משאבים לקבלת קישורים).

במקרים רבים, מנתח ה- XML ​​הוא חלק מקבצי ה- lib המופצים באמצעות רץ Servlet או עם שרת האינטרנט. אם לא, מנתח ה- XML ​​החינמי מ- java.sun.com מספיק.

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

תרחיש לדוגמא

תרחיש לדוגמה זה אמור לעזור לך להראות לך את הערך של Ant ולהעניק תובנה לגבי היתרונות שלה וכיצד תוכל להשתמש בה.

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

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

בסדר, תראה לי איך זה עובד

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

תהליך בנייה פשוט עם נמלה (simple.xml)


  

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

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


  

האלמנטים החשובים ביותר בקו הפרויקט הם ה- defaultו- basedir.

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

% ant -buildfile simple.xml init 

זה יבצע את antהפקודה ויעביר את הקובץ simple.xml עד initשהיעד יגיע. לכן, בדוגמה זו ברירת המחדל היא deploy. תהליך הנמלה המופעל בשורה הבאה יעבור simple.xmlבקובץ עד deployלהשגת הפקודה:

% נמלה-buildfile simple.xml 

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

קו העניין הבא הוא קו היעד. שתי גרסאות שונות מוצגות כאן:


  

targetהאלמנט מכיל ארבעה מאפיינים: name, if, unless, ו depends. נמלה דורשת את nameהתכונה, אך שלוש התכונות האחרות הן אופציונליות.

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

ifואת unlessהפקודות מאפשרים לציין הפקודות כדי להתבצע גם אם נכס מסוים מוגדר או אלא אם הנכס מוגדר. ifיבצע כאשר ערך הנכס מוגדר, ואת unlessיבצעו אם הערך אינו מוגדר. אתה יכול להשתמש availableבפקודה כדי להגדיר את המאפיינים כפי שמוצג בדוגמה הבאה, או להגדיר אותם דרך שורת הפקודה.

initהיעד מהדוגמה הפשוטה מכיל ארבע שורות של propertyפקודות כפי שמוצג כאן:


  

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

אם אתה רוצה להפנות את sourceDirהמשתנה בהמשך קובץ הנמלה, אתה פשוט יכול להשתמש בתחביר הבא כדי התראה נמלה להשיג את הערך עבור התג הזה: ${sourceDir}.

שתי פקודות אחרות המופיעות בקובץ ה- build לעיל הן:


  

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

השורה האחרונה שמעניינת את היזם העיקרית היא קו האוסף הבא:


  

javacפקוד מחייבת ספריית מקור (מיקום הקלט של קבצי .java) וכן ספריית יעד (מיקום הפלט של קובץ .classes). חשוב לציין כי כל הספריות חייבות להתקיים לפני הפעלת antהפקודה או שייווצרו באמצעות mkdirהפקודה. Ant אינו יוצר ספריות המבוססות על אינטואיציה, לכן עליכם ליצור outputDirאת mkdirהפקודה באמצעות הפקודה לפני שלב ההידור לעיל.

לאחר השלמת compileהמשימה, deployהמשימה תבצע את פעולת ההעתקה כדי להעביר את כל קבצי JSP מספריית המקור לספריית פריסה. באמצעות copydirהפקודה אתה מעתיק את כל ספריית JSP ממיקום אחד למשנהו. השתמשתי copyfileבפקודה להעתקת קובץ מאפיינים בודד כחלק מהבנייה.

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

משימות חשובות

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

קוד קומפילציה (כולל EJB)

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


  

אתה יכול להשתמש include/excludeביישויות בתוך javacהמשימה כדי לכלול / לא לכלול קבצים התואמים לתבנית nameבמאפיין מהקומפילציה. מהדוגמה שלעיל, ברצונך לכלול קבצים הכלולים בספרייה כלשהי המסתיימת ב-. Java, אך יחד עם זאת, ברצונך לא לכלול קבצים בשם Script.java אלא אם כן מאפיין bsf.presentמוגדר נכון.

אתה מגדיר את bsf.presentהמאפיין באמצעות המשימה הבאה המחפשת בנתיב הכיתה אחר שם המחלקה שצוין ומגדירה bsf.presentבהתאם לתוצאות החיפוש:


  

javacהפקודה לא יכלול קבצים שנקראים version.txt מהאוסף מבוסס על לשלול מעל הפקודה.

יצירת ג'אדוק

משימה נוספת ש- Ant יכול לעזור לה לבצע אוטומציה היא יצירת ה- javadoc. אתה יכול להשתמש בפקודה הבאה כדי ליצור את javadoc:


  

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

האם נמלה יכולה לעשות XYZ?

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

התשובה הפשוטה לשאלה "האם נמלה יכולה לעשות XYZ?" הוא "כן, אבל ייתכן שיהיה עליך להתאים אותו אישית."

הרחבת הנמלה

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

שיפורי דיווח