अपाचे एंट: Difference between revisions
(→सीमाएँ) |
|||
Line 96: | Line 96: | ||
==सीमाएँ== | ==सीमाएँ== | ||
* | *चींटी बिल्ड फ़ाइलें, जो एक्सएमएल में लिखी जाती हैं, जटिल और वर्बोज़ हो सकती हैं, क्योंकि वे पदानुक्रमित, आंशिक रूप से क्रमबद्ध और व्यापक रूप से क्रॉस-लिंक्ड होती हैं। यह जटिलता सीखने में बाधक हो सकती है। बड़े या जटिल प्रोजेक्ट्स की बिल्ड फ़ाइलें असहनीय रूप से बड़ी हो सकती हैं। बिल्ड फ़ाइलों का अच्छा डिज़ाइन और मॉड्यूलरीकरण पठनीयता में सुधार कर सकता है लेकिन आवश्यक रूप से आकार को कम नहीं कर सकता है। | ||
* | *कई पुराने कार्य, जैसे कि {{tag|javac|open}}, {{tag|exec|open}} और {{tag|java|open}} उन विकल्पों के लिए डिफ़ॉल्ट मानों का उपयोग करते हैं जो कार्यों के नवीनतम संस्करणों के साथ संगत नहीं हैं। उन डिफ़ॉल्टों को बदलने से मौजूदा चींटी स्क्रिप्ट रूक जाएंगी। | ||
* | *किसी स्ट्रिंग या टेक्स्ट तत्व में गुणों का विस्तार करते समय, अपरिभाषित गुणों को त्रुटि के रूप में नहीं उठाया जाता है, बल्कि एक अनविस्तारित संदर्भ के रूप में छोड़ दिया जाता है (जैसे <code>${unassigned.property}</code>)। | ||
*एंट के पास सीमित दोष प्रबंधन नियम हैं। | *एंट के पास सीमित दोष प्रबंधन नियम हैं। | ||
* | *लेज़ी गुण मूल्यांकन समर्थित नहीं है. उदाहरण के लिए, जब एक एंटकॉन्ट्रिब {{tag|for|open}}लूप के भीतर काम करते हैं, तो एक संपत्ति का उप-मूल्य के लिए पुनर्मूल्यांकन नहीं किया जा सकता है जो पुनरावृत्ति का हिस्सा हो सकता है। (कुछ तृतीय-पक्ष एक्सटेंशन वर्कअराउंड की सुविधा प्रदान करते हैं; एंटएक्सट्राज़ फ्लो-कंट्रोल टास्कसेट लूप के लिए कर्सर को फिर से परिभाषित करने की सुविधा प्रदान करते हैं।) | ||
*मेकफ़ाइल्स में, एक फ़ाइल प्रकार को दूसरे से बनाने | *मेकफ़ाइल्स में, एक फ़ाइल प्रकार को दूसरे से बनाने के किसी भी नियम को मेकफ़ाइल के भीतर इनलाइन लिखा जा सकता है। उदाहरण के लिए, कोई व्यक्ति किसी अन्य टूल को निष्पादित करने के लिए नियमों का उपयोग करके किसी दस्तावेज़ को किसी अन्य प्रारूप में बदल सकता है। चींटी में एक समान कार्य बनाना अधिक जटिल है: समान प्रकार की कार्यक्षमता को संभालने के लिए एक अलग कार्य जावा में लिखा जाना चाहिए और चींटी बिल्ड फ़ाइल के साथ शामिल किया जाना चाहिए। हालाँकि, यह पृथक्करण विभिन्न प्लेटफार्मों पर किसी कार्य को कैसे निष्पादित किया जाता है, इसके कुछ विवरण छिपाकर एंट स्क्रिप्ट की पठनीयता को बढ़ा सकता है। | ||
तृतीय-पक्ष | तृतीय-पक्ष चींटी एक्सटेंशन (जिन्हें एंटलिब्स कहा जाता है) मौजूद हैं जो बहुत सी अनुपलब्ध कार्यक्षमता प्रदान करते हैं। साथ ही, एक्लिप्स इंटीग्रेटेड डेवलपमेंट एनवायरमेंट (आईडीई) एंट स्क्रिप्ट का निर्माण और निष्पादन कर सकता है, जबकि नेटबीन्स आईडीई अपने आंतरिक निर्माण सिस्टम के लिए एंट का उपयोग करता है। चूँकि ये दोनों IDE बहुत लोकप्रिय विकास प्लेटफ़ॉर्म हैं, ये चींटी के उपयोग को महत्वपूर्ण रूप से सरल बना सकते हैं। (बोनस के रूप में, नेटबीन्स द्वारा जेनरेट की गई एंट स्क्रिप्ट का उपयोग उस आईडीई के बाहर स्टैंडअलोन स्क्रिप्ट के रूप में किया जा सकता है।) | ||
==यह भी देखें== | ==यह भी देखें== | ||
* | *[[बिल्ड ऑटोमेशन सॉफ़्टवेयर की सूची|बिल्ड ऑटोमेशन]] | ||
**[[बिल्ड ऑटोमेशन सॉफ़्टवेयर की सूची]] | **[[बिल्ड ऑटोमेशन सॉफ़्टवेयर की सूची]] | ||
*[[अपाचे जेली]], | *[[अपाचे जेली]], एक्सएमएल को निष्पादन योग्य कोड में बदलने के लिए एक उपकरण | ||
*[[अपाचे आइवी]], एक निर्भरता प्रबंधक जो एंट के उपप्रोजेक्ट एंट के साथ मजबूती से एकीकृत होता है | *[[अपाचे आइवी]], एक निर्भरता प्रबंधक जो एंट के उपप्रोजेक्ट एंट के साथ मजबूती से एकीकृत होता है | ||
*अपाचे मावेन, मुख्य रूप से जावा के लिए एक परियोजना प्रबंधन और निर्माण स्वचालन उपकरण | *अपाचे मावेन, मुख्य रूप से जावा के लिए एक परियोजना प्रबंधन और निर्माण स्वचालन उपकरण | ||
Line 116: | Line 116: | ||
==संदर्भ== | ==संदर्भ== | ||
{{Reflist}} | {{Reflist}} | ||
==अग्रिम पठन== | ==अग्रिम पठन== | ||
{{refbegin}} | {{refbegin}} |
Revision as of 09:51, 18 July 2023
![]() | |
Original author(s) | James Duncan Davidson |
---|---|
Developer(s) | Apache Software Foundation |
Initial release | 19 July 2000 |
Stable release | 1.10.13
/ January 10, 2023[1] |
Repository | Ant Repository |
Written in | Java |
Platform | Java SE |
Type | Build tool |
License | Apache License 2.0 |
अपाचे एंट सॉफ्टवेयर निर्माण प्रक्रियाओं को स्वचालित करने के लिए एक सॉफ्टवेयर उपकरण है[2] जो यूनिक्स के मेक बिल्ड टूल के प्रतिस्थापन के रूप में 2000 की शुरुआत में अपाचे टॉमकैट परियोजना से उत्पन्न हुआ था।[3] यह मेक के समान है, लेकिन इसे जावा भाषा का उपयोग करके प्रयुक्त किया जाता है और इसके लिए जावा प्लेटफ़ॉर्म की आवश्यकता होती है। मेक के विपरीत, जो मेकफ़ाइल प्रारूप का उपयोग करता है, एंट कोड निर्माण प्रक्रिया और उसकी निर्भरता का वर्णन करने के लिए XML का उपयोग करता है।[4]
अपाचे सॉफ्टवेयर फाउंडेशन द्वारा अपाचे लाइसेंस के तहत जारी किया गया, एंट एक ओपन-सोर्स प्रोजेक्ट है।
इतिहास
एंट ("एक और नीट टूल")[5] की कल्पना जेम्स डंकन डेविडसन ने सन माइक्रोसिस्टम्स के संदर्भ जेएसपी और सर्वलेट इंजन, बाद में अपाचे टॉमकैट को ओपन-सोर्स के रूप में रिलीज के लिए तैयार करते समय की थी। इसे सोलारिस प्लेटफॉर्म पर बनाने के लिए मेक के एक मालिकाना संस्करण का उपयोग किया गया था, लेकिन ओपन-सोर्स दुनिया में, यह नियंत्रित करने का कोई तरीका नहीं था कि टॉमकैट को बनाने के लिए किस प्लेटफॉर्म का उपयोग किया गया था; इसलिए एंट को XML "बिल्ड फ़ाइल" में निर्देशों से टॉमकैट बनाने के लिए एक सरल प्लेटफ़ॉर्म-स्वतंत्र टूल के रूप में बनाया गया था। एंट (संस्करण 1.1) को आधिकारिक तौर पर 19 जुलाई, 2000 को एक स्टैंडअलोन उत्पाद के रूप में जारी किया गया था।
एंट संस्करण 2 के लिए कई प्रस्ताव दिए गए हैं, जैसे जेम्स डंकन डेविडसन द्वारा एंटईटर, पीटर डोनाल्ड द्वारा मायर्मिडॉन [6] और कॉनर मैकनील द्वारा म्यूटेंट, जिनमें से किसी को भी डेवलपर समुदाय के साथ बड़ी स्वीकृति नहीं मिल पाई थी।[7]
एक समय (2002) में, एंट अधिकांश जावा विकास परियोजनाओं द्वारा उपयोग किया जाने वाला निर्माण उपकरण था।[8] उदाहरण के लिए, अधिकांश ओपन-सोर्स जावा डेवलपर्स ने अपने वितरण के साथ build.xml
फाइलें शामिल कीं। क्योंकि एंट ने बिल्ड प्रक्रिया के साथ जुनीट परीक्षणों को एकीकृत करना आसान बना दिया था, एंट ने डेवलपर्स को परीक्षण-संचालित विकास और एक्सट्रीम प्रोग्रामिंग को अपनाने की अनुमति दी थी।
2004 में अपाचे ने इसी उद्देश्य से मावेन नामक एक नया टूल बनाया।
ग्रैडल, जो इसी तरह का सॉफ्टवेयर है, 2008 में बनाया गया था, इसके विपरीत XML के स्थान पर ग्रूवी (और कुछ अन्य भाषाओं) कोड का उपयोग करता है।
एक्सटेंशन
डब्ल्यूओप्रोजेक्ट-एंट[9], एंट के लिए लिखे गए कार्य एक्सटेंशन के कई उदाहरणों में से एक है। ये एक्सटेंशन उनकी .jar
फ़ाइलों को एंट की lib
निर्देशिका में कॉपी करके इंस्टॉल किए जाते हैं। एक बार यह हो जाने के बाद, इन कार्य एक्सटेंशनों को सीधे विशिष्ट build.xml
फ़ाइल में प्रयुक्त किया जा सकता है। डब्ल्यूओप्रोजेक्ट एक्सटेंशन एप्पल के एक्सकोड सुइट का उपयोग करने के बजाय, वेबऑब्जेक्ट्स डेवलपर्स को अपने फ्रेमवर्क और ऐप्स के निर्माण में एंट का उपयोग करने की अनुमति देते हैं।
Antcontrib
[10] सशर्त विवरण और संपत्तियों पर संचालन के साथ-साथ अन्य उपयोगी कार्यों जैसे कार्यों का एक संग्रह प्रदान करता है।[11][12]
Ant-contrib.unkrig.de
[13] नेटवर्किंग, स्विंग (जावा) यूजर इंटरफेस, JSON प्रोसेसिंग और अन्य के लिए कार्यों और प्रकारों को प्रयुक्त करता है।
विवशतापूर्वक, .NET फ्रेमवर्क, ईजेबी और फ़ाइल सिस्टम परिवर्तन के लिए अन्य कार्य एक्सटेंशन उपस्थित हैं।[14]
उदाहरण
नीचे एक साधारण जावा "हैलो, वर्ल्ड" एप्लिकेशन के लिए एक नमूना build.xml
फ़ाइल सूचीबद्ध है। यह चार टार्गेट्स को परिभाषित करता है - clean
[15] clobber
, compile
और jar
, जिनमें से प्रत्येक का एक संबद्ध विवरण है। jar
लक्ष्य, compile
टार्गेट को एक निर्भरता के रूप में सूचीबद्ध करता है। यह एंट को बताता है कि 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>
प्रत्येक टार्गेट के भीतर वे क्रियाएं होती हैं जो एंट को उस टार्गेट को बनाने के लिए करनी चाहिए; इन्हें अंतर्निहित कार्यों का उपयोग करके निष्पादित किया जाता है। उदाहरण के लिए, का निर्माण करने के लिए compile
टार्गेट एंट को पहले एक निर्देशिका बनानी होगी जिसे कहा जाता है classes
(जो एंट तभी करेगी जब वह पहले से मौजूद न हो) और फिर जावा कंपाइलर को इनवॉक करें। इसलिए, उपयोग किए जाने वाले कार्य हैं mkdir
और javac
. ये समान नाम की कमांड-लाइन उपयोगिताओं के समान कार्य करते हैं।
इस उदाहरण में प्रयुक्त एक अन्य कार्य को jar
नाम दिया गया है:
<jar destfile="hello.jar">
इस एंट कार्य का नाम सामान्य जावा कमांड-लाइन उपयोगिता, जार जैसा ही है, लेकिन वास्तव में यह एंट प्रोग्राम के अंतर्निहित जार/ज़िप फ़ाइल समर्थन के लिए एक कॉल है। यह विवरण अधिकांश अंतिम उपयोगकर्ताओं के लिए प्रासंगिक नहीं है, जिन्हें उनके द्वारा मांगी गई फ़ाइलों के साथ केवल वही जार मिलता है जो वे चाहते थे।
कई एंट कार्य अपना काम बाहरी प्रोग्रामों, या तो देशी या जावा, को सौंप देते हैं। वे कमांड लाइन स्थापित करने के लिए एंट के अपने <exec>
और <java>
कार्यों का उपयोग करते हैं, और बिल्ड फ़ाइल में जानकारी से लेकर प्रोग्राम के तर्कों और रिटर्न वैल्यू की व्याख्या करने तक मैपिंग के सभी विवरणों को संभालते।उपयोगकर्ता देख सकते हैं कि कौन से कार्य ऐसा करते हैं (उदाहरण के लिए <csv>
, <signjar>
, <chmod>
, <rpm>
, पथ पर अंतर्निहित प्रोग्राम के बिना, या पूर्ण जावा डेवलपमेंट किट (जेडीके) स्थापित किए बिना सिस्टम पर कार्य निष्पादित करने का प्रयास करके करते हैं।
पोर्टेबिलिटी (सुवाह्यता)
एंट का उद्देश्य उन सभी प्रणालियों के साथ काम करना है जिनके लिए जावा रनटाइम उपलब्ध हैं। इसका उपयोग आमतौर पर विंडोज़, लिनक्स, मैकओएस और अन्य यूनिक्स ऑपरेटिंग सिस्टम के साथ किया जाता है, लेकिन इसका उपयोग ओएस/2, ओपनवीएमएस, सोलारिस, एचपी-यूएक्स जैसे अन्य प्लेटफार्मों पर भी किया जाता है।[16]
एंट को मेक की तुलना में अधिक पोर्टेबल बनाने के लिए डिज़ाइन किया गया था।[4] मेक की तुलना में, एंट कम प्लेटफ़ॉर्म-विशिष्ट शेल कमांड का उपयोग करता है। एंट अंतर्निहित कार्यक्षमता प्रदान करती है जो सभी प्लेटफार्मों पर समान व्यवहार करने के लिए डिज़ाइन की गई है। उदाहरण के लिए, ऊपर दिए गए नमूना build.xml
फ़ाइल में, साफ़ लक्ष्य classes
निर्देशिका और उसमें मौजूद सभी चीज़ों को हटा देता है। मेकफाइल में यह आम तौर पर कमांड के साथ किया जाएगा:
rm -rf classes/
rm
एक यूनिक्स-विशिष्ट कमांड कुछ अन्य परिवेशों में अनुपलब्ध है। उदाहरण के लिए, माइक्रोसॉफ्ट विंडोज़ इसका उपयोग करेगा:
rmdir /S /Q classes
एंट बिल्ड फ़ाइल में एक ही टार्गेट एक अंतर्निहित कमांड का उपयोग करके पूरा किया जाएगा:
<delete dir="classes"/>
इसके अलावा, एंट निर्देशिकाओं के लिए फॉरवर्ड स्लैश या बैकस्लैश और पथ विभाजकों के लिए अर्धविराम या कोलन के बीच अंतर नहीं करती है। यह प्रत्येक को उस प्लेटफ़ॉर्म के लिए उपयुक्त प्रतीक में परिवर्तित करता है जिस पर वह कार्यान्वित होता है।
सीमाएँ
- चींटी बिल्ड फ़ाइलें, जो एक्सएमएल में लिखी जाती हैं, जटिल और वर्बोज़ हो सकती हैं, क्योंकि वे पदानुक्रमित, आंशिक रूप से क्रमबद्ध और व्यापक रूप से क्रॉस-लिंक्ड होती हैं। यह जटिलता सीखने में बाधक हो सकती है। बड़े या जटिल प्रोजेक्ट्स की बिल्ड फ़ाइलें असहनीय रूप से बड़ी हो सकती हैं। बिल्ड फ़ाइलों का अच्छा डिज़ाइन और मॉड्यूलरीकरण पठनीयता में सुधार कर सकता है लेकिन आवश्यक रूप से आकार को कम नहीं कर सकता है।
- कई पुराने कार्य, जैसे कि
<javac>
,<exec>
और<java>
उन विकल्पों के लिए डिफ़ॉल्ट मानों का उपयोग करते हैं जो कार्यों के नवीनतम संस्करणों के साथ संगत नहीं हैं। उन डिफ़ॉल्टों को बदलने से मौजूदा चींटी स्क्रिप्ट रूक जाएंगी। - किसी स्ट्रिंग या टेक्स्ट तत्व में गुणों का विस्तार करते समय, अपरिभाषित गुणों को त्रुटि के रूप में नहीं उठाया जाता है, बल्कि एक अनविस्तारित संदर्भ के रूप में छोड़ दिया जाता है (जैसे
${unassigned.property}
)। - एंट के पास सीमित दोष प्रबंधन नियम हैं।
- लेज़ी गुण मूल्यांकन समर्थित नहीं है. उदाहरण के लिए, जब एक एंटकॉन्ट्रिब
<for>
लूप के भीतर काम करते हैं, तो एक संपत्ति का उप-मूल्य के लिए पुनर्मूल्यांकन नहीं किया जा सकता है जो पुनरावृत्ति का हिस्सा हो सकता है। (कुछ तृतीय-पक्ष एक्सटेंशन वर्कअराउंड की सुविधा प्रदान करते हैं; एंटएक्सट्राज़ फ्लो-कंट्रोल टास्कसेट लूप के लिए कर्सर को फिर से परिभाषित करने की सुविधा प्रदान करते हैं।) - मेकफ़ाइल्स में, एक फ़ाइल प्रकार को दूसरे से बनाने के किसी भी नियम को मेकफ़ाइल के भीतर इनलाइन लिखा जा सकता है। उदाहरण के लिए, कोई व्यक्ति किसी अन्य टूल को निष्पादित करने के लिए नियमों का उपयोग करके किसी दस्तावेज़ को किसी अन्य प्रारूप में बदल सकता है। चींटी में एक समान कार्य बनाना अधिक जटिल है: समान प्रकार की कार्यक्षमता को संभालने के लिए एक अलग कार्य जावा में लिखा जाना चाहिए और चींटी बिल्ड फ़ाइल के साथ शामिल किया जाना चाहिए। हालाँकि, यह पृथक्करण विभिन्न प्लेटफार्मों पर किसी कार्य को कैसे निष्पादित किया जाता है, इसके कुछ विवरण छिपाकर एंट स्क्रिप्ट की पठनीयता को बढ़ा सकता है।
तृतीय-पक्ष चींटी एक्सटेंशन (जिन्हें एंटलिब्स कहा जाता है) मौजूद हैं जो बहुत सी अनुपलब्ध कार्यक्षमता प्रदान करते हैं। साथ ही, एक्लिप्स इंटीग्रेटेड डेवलपमेंट एनवायरमेंट (आईडीई) एंट स्क्रिप्ट का निर्माण और निष्पादन कर सकता है, जबकि नेटबीन्स आईडीई अपने आंतरिक निर्माण सिस्टम के लिए एंट का उपयोग करता है। चूँकि ये दोनों IDE बहुत लोकप्रिय विकास प्लेटफ़ॉर्म हैं, ये चींटी के उपयोग को महत्वपूर्ण रूप से सरल बना सकते हैं। (बोनस के रूप में, नेटबीन्स द्वारा जेनरेट की गई एंट स्क्रिप्ट का उपयोग उस आईडीई के बाहर स्टैंडअलोन स्क्रिप्ट के रूप में किया जा सकता है।)
यह भी देखें
- बिल्ड ऑटोमेशन
- अपाचे जेली, एक्सएमएल को निष्पादन योग्य कोड में बदलने के लिए एक उपकरण
- अपाचे आइवी, एक निर्भरता प्रबंधक जो एंट के उपप्रोजेक्ट एंट के साथ मजबूती से एकीकृत होता है
- अपाचे मावेन, मुख्य रूप से जावा के लिए एक परियोजना प्रबंधन और निर्माण स्वचालन उपकरण
- नैंट, एंट जैसा उपकरण जो जावा के बजाय .NET फ्रेमवर्क वातावरण पर लक्षित है
- ग्रैडल, ग्रूवी के साथ निर्मित एक जेवीएम बिल्ड टूल
संदर्भ
- ↑ "Apache Ant Project News". Retrieved 8 June 2023.
- ↑ "अपाचे चींटी - स्वागत है". ant.apache.org. Retrieved 2022-01-25.
- ↑ "अपाचे चींटी - अक्सर पूछे जाने वाले प्रश्न". ant.apache.org. Retrieved 2022-01-25.
- ↑ Jump up to: 4.0 4.1 Moodie 2005, pp. 5–9, Chapter §1 Introducing Ant.
- ↑ "Why do you call it Ant? – Apache Ant FAQ".
- ↑ Peter Donald. "Myrmidon: The Ant2.0 Proposal".
- ↑ MacNeill, Conor. "चींटी विकास का प्रारंभिक इतिहास".
- ↑ Wiley (2002). एक्सट्रीम प्रोग्रामिंग के लिए जावा टूल्स. p. 76.
- ↑ "WOProject-Ant – WOProject / WOLips – Confluence". Archived from the original on 2009-01-08.
- ↑ "Ant-Contrib".
- ↑ "Ant-Contrib Tasks".
- ↑ Moodie 2005, pp. 266–267, Chapter §10 Writing Custom Tasks - Using Third-Party Custom Tasks.
- ↑ "ant-contrib.unkrig.de".
- ↑ "Overview of Ant Tasks".
- ↑ Moodie 2005, pp. 121–125, Chapter §5 Building a Project - Assembling the project - Manipulating the File Location.
- ↑ Apache Ant Manual. Section "System Requirements".
अग्रिम पठन
- Loughran, Steve; Hatcher, Erik (July 12, 2007). Ant in Action (2nd ed.). Manning Publications. p. 600. ISBN 978-1-932394-80-1.
- Holzner, Steven (April 13, 2005). Ant – The Definitive Guide (2nd ed.). O'Reilly Media. p. 334. ISBN 978-0-596-00609-9.
- Moodie, Matthew (November 16, 2005). Pro Apache Ant (1st ed.). Apress. ISBN 1-59059-559-9.
- Bell, Alexis T. (July 7, 2005). ANT Java Notes: An Accelerated Intro Guide to the Java ANT Build Tool (1st ed.). Virtualbookworm.com Publishing. p. 268. ISBN 978-1-58939-738-5.
- Hatcher, Erik; Loughran, Steve (August 2002). Java Development with Ant (1st ed.). Manning Publications. pp. 672. ISBN 978-1-930110-58-8.
- Niemeyer, Glenn; Poteet, Jeremy (May 29, 2003). Extreme Programming with Ant: Building and Deploying Java Applications with JSP, EJB, XSLT, XDoclet, and JUnit (1st ed.). SAMS Publishing. p. 456. ISBN 978-0-672-32562-5.
- Williamson, Alan (November 1, 2002). Ant – Developer's Handbook (1st ed.). SAMS Publishing. p. 456. ISBN 978-0-672-32426-0.
- Matzke, Bernd (September 2003). ANT: The Java Build Tool In Practice (1st ed.). Charles River Media. pp. 280. ISBN 978-1-58450-248-7.
बाहरी संबंध

- No URL found. Please specify a URL here or add one to Wikidata.