تضم هذه المقالة مصادرَ مُستشهداً بها بشكلٍ عام أو بشكل غير دقيق، وبالتالي لا يمكن تحديد موقعها بسهولة في مصادرها. (أغسطس 2010) |
نوع | |
---|---|
نظام التشغيل | |
المنصة | |
النموذج المصدري | |
المطورون | |
موقع الويب |
لغة البرمجة | |
---|---|
الإصدار الأول |
19 يوليو 2000 [3] ![]() |
الإصدار الأخير |
|
المستودع | |
الرخصة | |
الملفات المقروءة |
أباتشي أنت هي أداة برمجية لتشغيل عمليات بناء البرمجيات ألياَ. وهو مشابه لـ صنع ولكن يتم تطبيقه باستخدام لغة جافا، ويتطلب برنامج جافا، وهو الأنسب لبناء مشاريع جافا.
والفرق الأكثر ملاحظة بين Ant وصنع هو استخدام Ant يستخدم لغة الرقم القابلة للامتداد لوصف عملية البناء وتابعيتها، بينما يستخدم صنع تنسيق Makefile. افتراضيا، يُسمى ملف لغة الرقم القابلة للامتداد build.xml.
Ant هو مشروع تابع لـ اباتشي. وهو من برمجيات مفتوحة المصدر، وتم إصداره بموجب رخصة إيه إتش-64 أباتشي.
فكر جيمس دونكان ديفيدسون في Ant (اختصار "Another Neat Tool"[7]) عند تحويله لمنتج من صن مايكروسيستمز إلى مصدر مفتوح. وهذا المنتج، الذي تشير إليه صن بمحرك صفحات خادم جافا/سيرفلت، أصبح فيما بعد آباتشي تومكات [الإنجليزية]. وتم استخدام نسخة احتكارية من صنع لبنائه على سولاريس، ولكن في عالم المصدر مفتوح لم يكن هناك طريقة للتحكم في أي برنامج اُستخدِم لبناء Tomcat. تم إنشاء Ant كأداة برنامج مستقل بسيطة لبناء Tomcat من خلال توجيهات لغة الرقم القابلة للامتداد «ملف بناء». تم إصدر Ant (الإصدار 1.1) رسميا كمنتج مستقل في 19 يوليو 2000.
تم تقديم عدة مقترحات لإصدار Ant 2، مثل Ant Eater من قبل جيمس دنكان ديفيدسون، وMyrmidon من قبل بيتر دونالد، وMutant من قبل كونور ماكنيل، ولم يجد أي منهم القبول الواسع مع مجتمع المطورين.[8]
اليوم، أصبح Ant أداة بناءالأكثر استخداما من قبل مشاريع تنمية جافا.[9] فعلى سبيل المثال، معظم مطوريّ المصدر المفتوح تشمل ملفات build.xml مع توزيعتها.[بحاجة لمصدر]
ولأن Ant جعل من العادي دمج [بحاجة لمصدر]اختبارات جيه يونت مع عملية البناء، جعل Ant من السهل على المطورين اقتباس اختبار التطوير المدفوع، وحتى البرمجة المدقعة.
وتشمل أدوات جافا للبناء Maven، وJavaMake.
build.xml
وفيما يلي عينة من ملف build.xml لجافا بسيطة لتطبيق "Hello, world". وهي تحدد أربعة أهداف – clean، وclobber، وcompile، وjar، كل منها يحتوي على وصف مرتبطة به. ويسرد هدف jar هدف 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>
وبداخل كل هدف يوجد الإجراءات التي يجب على Ant اتخاذها لبناء الهدف، ويتم هذا باستخدام tasks مدمجة. فعلى سبيل المثال، لبناء هدف compile يجب أولأعلى Ant إنشاء مجلد يُسمى طبقات (لن يفعلAnt ذلك إلا إذا كان غير موجود بالفعل) ثم يستدعي مترجم جافا.ولذلك، فإن الـ tasks المستخدمة هي mkdir وjavac. وهم يقومون بتنفيذ مهمة مشابهة لأدوات مساعدة سطر الأوامر الذي يحمل الاسم نفسه. وهناك مهمة أخرى مستخدمة في هذا المثال تُسمى jar :
<jar destfile="hello.jar">
مهمة Ant هذه لديها نفس اسم أداة المساعدة لسطر أوامر جافا العامة، JAR، ولكنها في الحقيقة دعوة لملف دعم برنامج Ant الذي بني في jar/zip المتضمن بداخله. هذه التفاصيل ليست واضحة لمعظم المستخدمين النهائيين، الذين يحصولن فقط على jar، مع الملفات التي طلبوها. تفوض العديد من مهام Ant أعملهم إلى برامج خارجية، سواء أصلية أو جافا. يستخدمون مهام <exec> و<java> الخاصة ببرنامج Ant لإعداد أسطر الأوامر، والتعامل مع كل تفاصيل الرسم من معلومات ملف البناء إلى حجج البرنامج وتفسير قيمة العودة. يمكن للمستخدمين رؤية المهام التي تفعل ذلك (على سبيل المثال <cvs> و<signjar>، و<chmod>، و<rpm>)، عن طريق محاولة تنفيذ المهمة على نظام بدون البرنامج الأساسي على الطريق، أو بدون تثبيت عدة تطوير جافا.
WOProject-Ant[10] هو واحد من أمثلة كثيرة على امتداد task مكتوب لـ Ant. وضعت هذه الامتدادات لاستخدامها عن طريق نسخ ملفات jar إلى دليل lib التابع لـ Ant. وحالما يتم ذلك، يمكن استدعاء مهام الامتدادات مباشرة في ملف build.xml نموذجي. وامتدادات WOProject تسمح لمطوري WebObjects باستخدام ant في بناء إطارراتها وتطبيقاتها، بدلا من استخدام مجموعة آبل إكس كود.
يوفر Antcontrib[11] مجموعة من المهام مثل العبارات الشرطية والعمليات على الخصائص فضلا عن مهام أخرى مفيدة.[12]
ويوجد امتدادات مهام أخرى موجودة لـ Perforce، ودوت نت، وإنتربرايز جافابين، ومعالجات الملفات، فقط لتسمية عدد قليل.[13]
وأحد أهم الأهداف الرئيسية لـ Ant هي حل مشكلة قابلية حمل صنع. في Makefile الإجراءات المطلوبة لإنشاء هدف مُحددة كأوامر قشرة وهي محددة لـ منصة التي تشغل صنع. وتتطلب المنصات المختلفة أوامر قشرة مختلفة. وتحل Ant هذه المشكلة عن طريق توفير كمية كبيرة من الوظائف المضمنة التي من المفترض أن تتصرف بنفس الشكل في جميع المنصات. وعلى سبيل المثال، ففي نموذج ملف build.xml أعلاه يحذف هدف clean دليل classes وكل شيء بداخله. وفي Makefile عادة ما يتم ذلك مع الأمر:
rm -rf classes/
آر إم هو أمر يونكس معين غير متوفر في بعض البيئات الأخرى. مايكروسوفت ويندوز، على سبيل المثال، سيستخدم:
rmdir /S /Q classes
في ملف بناء Ant يمكن إنجاز الشيء نفسه باستخدام الأمر المدمج:
<delete dir="classes"/>
والفرق المشترك بين المنصات هو الرمز المستخدم لتحديد عناصر مكونات ملف مسار النظام. يستخدم يونكس شرطة مائلة للامام (/) لتحديد المكونات في حين أن ويندوز يستخدم شرطة مائلة للخلف (\). ملفات بناء Ant تسمح للمؤلفين باختيار الاتفاقية المفضلة لديهم: شرطة مائلة للامام أو شرطة مائلة للخلف للدلائل؛ وفواصل منقوطة أو علامة ترقيم لفواصل المسار. وهو يحول كلا إلى الرمز المناسب للمنصة التي سيُنفذ عليها.
معظم هذه الحدود لا تنطبق على إصدارات Ant الحديثة وهناك عدد لا يحصى من امتدادات طرف Ant الثالث (يسمى antlibs) والتي توفر الكثير من الوظائف المفقودة. كما يمكن لـ بيئة تطوير Eclipse المتكاملة بناء وتنفيذ نصوص Ant، في حين أن بيئة تطوير نت بينز المتكاملة تستخدم Ant لبناء نظامها الداخلي. وحيث أن كلا هاتين بيئات التطوير المتكاملة هي منصات تطوير شعبية، فإنهم يمكنم تبسيط استخدام Ant بشكل كبير (وكمكافأة يمكن استخدام نصوص Ant التي تم إنشاؤها بواسطة نت بينز خارج بيئة التطوير المتكاملة تلك كنصوص مستقلة).