2008-08-26 13 views
7

हर बार जब मैं एक नई प्रोजेक्ट बनाता हूं तो मैं आखिरी प्रोजेक्ट की चींटी फाइल को नए पर कॉपी करता हूं और उचित परिवर्तन करता हूं (अगली परियोजना के लिए इसे और अधिक लचीला बनाने के लिए कोशिश कर रहा हूं)। लेकिन चूंकि मैंने शुरुआत में इसके बारे में वास्तव में सोचा नहीं था, इसलिए फ़ाइल वास्तव में बदसूरत लग रही थी।बेस्ट अपाचे एंट टेम्पलेट

क्या आपके पास एक चींटी टेम्पलेट है जिसे आसानी से एक नई परियोजना में पोर्ट किया जा सकता है? एक बनाने के लिए कोई सुझाव/साइटें?

धन्यवाद।

उत्तर

9

टेम्पलेट बनाने का एक विकल्प धीरे-धीरे अपनी वर्तमान प्रोजेक्ट की एंट स्क्रिप्ट को सामान्यीकृत करके विकसित करना है ताकि अगली बार जब आप इसे एक नई परियोजना पर उपयोग के लिए कॉपी कर सकें तो इसमें कुछ बदलाव आएंगे। यहाँ काफी चीजे है जो आप कर सकते है।

फ़ाइल नामों में $ {ant.project.name} का उपयोग करें, इसलिए आपको केवल प्रोजेक्ट तत्व में अपना एप्लिकेशन नाम उल्लेख करना होगा। उदाहरण के लिए, आप myapp.jar उत्पन्न करता है, तो:

<project name="myapp"> 
    ... 
    <target name="jar"> 
     ... 
     <jar jarfile="${ant.project.name}.jar" ... 

संरचना अपने स्रोत निर्देशिका संरचना ताकि आप पूरी निर्देशिका को कॉपी, बजाय अलग-अलग फ़ाइलों का नामकरण द्वारा अपने निर्माण पैकेज कर सकते हैं। मशीन विशिष्ट और परियोजना विशिष्ट निर्माण फ़ाइल गुणों के लिए

<copy todir="${war}/WEB-INF/lib" flatten="true"> 
    <fileset dir="lib" includes="**/*.jar"> 
</copy> 

उपयोग गुण फ़ाइलें: उदाहरण के लिए, यदि आप एक वेब अनुप्रयोग संग्रह करने के लिए जार फ़ाइलों को कॉपी कर रहे हैं, की तरह कुछ है।

<!-- Machine-specific property over-rides --> 
<property file="/etc/ant/build.properties" /> 

<!-- Project-specific property over-rides --> 
<property file="build.properties" /> 

<!-- Default property values, used if not specified in properties files --> 
<property name="jboss.home" value="/usr/share/jboss" /> 
... 

ध्यान दें कि चींटी गुण नहीं बदला जा सकता है एक बार, सेट करके डिफ़ॉल्ट मान से पहले एक नया मान निर्धारित करके एक मान को ओवरराइड।

0

मैं बिल्कुल वही काम करता था .... फिर मैंने maven पर स्विच किया। मेवेन आपके निर्माण की कॉन्फ़िगरेशन को प्रबंधित करने के लिए आपके निर्माण और एक साधारण भंडार को कॉन्फ़िगर करने के लिए एक साधारण एक्सएमएल फ़ाइल पर निर्भर करता है (इन निर्भरताओं को अपने कोड के साथ अपने स्रोत नियंत्रण प्रणाली में जांचने के बजाय)।

एक विशेषता जो मुझे सचमुच पसंद है वह आपके जार के संस्करण को कितना आसान है - आसानी से आपके पुस्तकालय के विरासत उपयोगकर्ताओं के लिए पिछले संस्करणों को उपलब्ध रखना। यह आपके लाभ के लिए भी काम करता है जब आप अपनी लाइब्रेरी को अपग्रेड करना चाहते हैं - जैसे जूनिट। इन निर्भरताओं को आपके मैवेन रिपॉजिटरी में अलग-अलग फ़ाइलों (उनकी संस्करण जानकारी के साथ) के रूप में संग्रहीत किया जाता है, इसलिए आपके कोड के पुराने संस्करणों में हमेशा उनकी विशिष्ट निर्भरताएं उपलब्ध होती हैं।

यह एक बेहतर चींटी है।

+3

मैवेन चींटी से बेहतर हो सकता है लेकिन यह सवाल का जवाब नहीं देता है। मैवेन में स्विच करने में सक्षम होने की हमेशा लक्जरी नहीं होती है। –

+1

और मेरे अनुभव से, यह हमेशा एक लक्जरी नहीं है :( –

0

मैं बिल्कुल वही काम करता था .... फिर मैंने मैवेन पर स्विच किया।

ओह, यह मैवेन 2 है। मुझे डर था कि कोई भी आज भी मेवेन का उपयोग कर गंभीरता से उपयोग कर रहा था। चुटकुले को छोड़कर: यदि आप मेवेन 2 पर स्विच करने का निर्णय लेते हैं, तो आपको जानकारी की तलाश करते समय सावधानी बरतनी पड़ेगी, क्योंकि मैवेन 2 मैवेन का पूर्ण पुनर्मूल्यांकन है, कुछ बुनियादी डिजाइन निर्णयों में बदलाव आया है। दुर्भाग्यवश, उन्होंने नाम नहीं बदला, जो अतीत में भ्रम का एक बड़ा स्रोत रहा है (और फिर भी कभी-कभी, वेब की "स्मृति" प्रकृति को देखते हुए)।

यदि आप चींटी भावना में रहना चाहते हैं तो आप एक और चीज कर सकते हैं, अपनी निर्भरताओं को प्रबंधित करने के लिए Ivy का उपयोग करना है।

1

यदि आप समान निर्देशिका संरचनाओं के साथ कई परियोजनाओं पर काम कर रहे हैं और मेवेन जाने के बजाय चींटी से चिपकना चाहते हैं तो Import task का उपयोग करें। यह आपको प्रोजेक्ट बिल्ड फाइलों को सिर्फ टेम्पलेट आयात करने और किसी भी चर (क्लासपाथ, निर्भरता, ...) को परिभाषित करने की अनुमति देता है और आयातित टेम्पलेट में सभी वास्तविक बिल्ड स्क्रिप्ट बंद कर देता है। यह टेम्पलेट में कार्यों को ओवरराइड करने की अनुमति देता है जो आपको प्रोजेक्ट विशिष्ट प्री या पोस्ट लक्ष्य हुक में डाल देता है।

+0

हां, यह वही है जो मैं सोच रहा हूं .. क्या आप टेम्पलेट पोस्ट कर सकते हैं जो सभी वास्तविक निर्माण स्क्रिप्ट के साथ आयात किया जाएगा? – pek

0

एक बात देखने के लिए - यदि आप ग्रहण का उपयोग कर रहे हैं, तो ant4eclipse कार्यों को देखें। मैं एक एकल निर्माण स्क्रिप्ट का उपयोग करता हूं जो ग्रहण में स्थापित विवरण (स्रोत डीआईआर, निर्भरता परियोजनाओं सहित निर्माण पथ, निर्माण आदेश इत्यादि) के लिए पूछता है।

यह आपको एक स्थान (ग्रहण) में निर्भरताओं का प्रबंधन करने की अनुमति देता है और फिर भी स्वचालन में कमांड लाइन निर्माण का उपयोग करने में सक्षम हो जाता है।

1

मुझे एक ही समस्या थी और मेरे टेम्पलेट्स को सामान्यीकृत किया और उन्हें अपने प्रोजेक्ट में विकसित किया: Antiplate। शायद यह आपके लिए भी उपयोगी है।

6

आप http://import-ant.sourceforge.net/ को आज़मा सकते हैं। यह बिल्ड फ़ाइल स्निपेट का एक सेट है जिसका उपयोग सरल कस्टम बिल्ड फ़ाइलों को बनाने के लिए किया जा सकता है।

+0

स्वीकृत उत्तर के अलावा, यह उत्तर प्रश्न का उत्तर देने की कोशिश कर रहा है _actually_ के निकटतम। वैकल्पिक "बेहतर" समाधानों के साथ नहीं आ रहा है। – Steen

संबंधित मुद्दे