Apache Ant

מתוך המכלול, האנציקלופדיה היהודית
קפיצה לניווט קפיצה לחיפוש
Apache Ant
מפתח מוסד התוכנה אפאצ'י
גרסה אחרונה 1.9.4 (5 במאי 2014)
מערכת הפעלה חוצה פלטפורמות
סוג רישיון רישיון אפאצ'י
קטגוריה בניית תוכנה
ant.apache.org

אפאצ'י אנטאנגלית: Apache Ant, ראשי תיבות של "Another Neat Tool"; ה"נמלה" של אפאצ'י) הוא כלי תוכנה לאוטומציה של תהליכי בניית תוכנה. הכלי דומה ל-Make, אבל ממומש באמצעות שפת התכנות Java, דורש את הפלטפורמה של ג'אווה, ומותאם בצורה הטובה ביותר לבניית פרויקטים בג'אווה.

ההבדל הבולט ביותר בין Ant ל-Make הוא ש-Ant משתמשת ב-XML כדי לתאר את תהליך הבנייה ואת התלויות (dependencies) בפרויקט, בעוד ש-Make משתמשת בפורמט הנקרא Makefile. כברירת מחדל, קובץ ה-XML נקרא build.xml.

כיום Ant הוא הכלי הנפוץ ביותר לבניית פרויקטים של ג'אווה. לדוגמה, מרבית המפתחים בג'אווה בקוד פתוח, כוללים את הקובץ build.xml ביחד עם ההפצה שלהם.

מכיוון ש-Ant מאפשרת לשלב בקלות טסטים של JUnit ביחד עם תהליך הבנייה, היא מאפשרת למפתחים המעוניינים בכך לאמץ בקלות שיטות עבודה כמו פיתוח מונחה-בדיקות ואפילו Extreme programming.

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

קובץ build.xml לדוגמה

למטה מופיעה דוגמה לקובץ build.xml עבור תוכנית Hello world פשוטה בג'אווה. בדוגמה ניתן לראות כי מוגדרות ארבע מטרות (targets). שמות המטרות: compile ,clobber ,clean ו-jar, ולכל אחת מהן יש את התיאור שלה (description). ה"מטרה" jar מציינת שהיא תלויה (depends) במטרה compile. זה אומר ל-Ant שלפני שהיא יכולה להתחיל את ה"מטרה" jar, עליה קודם להשלים את ה"מטרה" compile.

<?xml version="1.0"?>
<project name="Hello" default="compile">
    <target name="clean" description="remove intermediate files">
        <delete dir="classes"/>
    </target>
    <target name="clobber" depends="clean" description="remove all artifact files">
        <delete file="hello.jar"/>
    </target>
    <target name="compile" description="compile the Java source code to class files">
        <mkdir dir="classes"/>
        <javac srcdir="." destdir="classes"/>
    </target>
    <target name="jar" depends="compile" description="create a Jar file for the application">
        <jar destfile="hello.jar">
            <fileset dir="classes" includes="**/*.class"/>
            <manifest>
                <attribute name="Main-Class" value="HelloProgram"/>
            </manifest>
        </jar>
    </target>
</project>

בתוך כל target מפורטות הפעולות ש-Ant צריכה לבצע על מנת לבנות את אותה "מטרה"; פעולות אלה מבוצעות באמצעות "משימות" (tasks) מוּבְנוֹת. לדוגמה, על מנת לבנות את ה"מטרה" compile, אנט צריכה קודם ליצור תיקייה בשם classes (אנט תיצור את התיקייה רק אם היא עדיין לא קיימת), ואז תיקרא למהדר של ג'אווה. לכן ה"משימות" שבהן משתמשים הן mkdir ו-javac. משימות אלה מבצעות את אותה העבודה שמבצעים יישומי שורת הפקודה בעלי אותם שמות.

עוד task שמשתמשים בו בדוגמה הזאת נקרא jar:

 <jar destfile="hello.jar">

ל"משימה" זו של Ant יש את אותו השם כמו לכלי שורת הפקודה הנפוץ של ג'אווה, JAR, אבל למעשה זוהי קריאה לפונקציה מובנית של אנט המטפלת בקובצי jar/zip. פרט זה אינו רלוונטי עבור מרבית המשתמשים שבסך הכל מקבלים את ה-JAR שרצו, אשר מכיל את הקבצים שהם ביקשו.

משימות רבות של Ant מאצילות את העבודה שלהן על תוכניות חיצוניות שבאות עם מערכת ההפעלה (native) או לתוכניות ג'אווה. משימות אלה משתמשות במשימות אחרות שבאות מובנות באנט: <exec> ו-<java>, על מנת ליצור את שורות הפקודה ולטפל בכל הפרטים של מיפוי המידע בין הקובץ build.xml לארגומנטים של התוכניות והפירוש של הערכים המוחזרים.

ראו גם