2008-08-12 21 views
26

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

तो मैं मैं आयात करने के लिए utils फ़ाइल निर्माण की जरूरत है पता है।

<import file="../utils/build/build.xml" /> 

क्योंकि आयात कार्य, लगभग हर दूसरे चींटी taks के विपरीत, basedir से नहीं चलता है कौन सा काम नहीं करता है, यह लोक निर्माण विभाग से चलाता है।

: तो चारों ओर पाने के लिए है कि मैं इस छोटे से छोटा गीत, जो सफलतापूर्वक तो अब जबकि Ive मेरी आयात समस्या मैं कार्य कॉल करने की आवश्यकता हल निर्माण फ़ाइल

<property name="baseDirUpOne" location=".." /> 
    <import file="${baseDirUpOne}/utils/build/build.xml" /> 

आयात करता है, अच्छी तरह से है कि आसान सही होना चाहिए

<antcall target="utils.package" /> 

ध्यान दें कि ऊपर में, utils ../utils/build/build.xml

समस्या अब मैं में चल रहा हूँ की इस परियोजना का नाम है कि चींटी कॉल में निष्पादित नहीं करता है। ./utils/build तो मुझे क्या चाहिए, और नहीं मिल सकता है, है एक runat संपत्ति या कुछ इसी तरह, अनिवार्य रूप से:

<antcall target="utils.package" runat="../utils/build" /> 

कारण मैं इस की जरूरत है कि मेरे utils में फ़ाइल कदम निर्माण चुनना होगा जिसमें कोड जार को कॉपी करने के लिए संबंधित पथ पर आधारित है तो के रूप में पथ हार्डकोड से बचने के लिए है मेरी चींटी फाइल में। कोई विचार?

उत्तर

33

मुझे कुछ समान सेट अप मिला है: मेरे पास एक मुख्य चींटी build.xml है जो एक अलग build.xml को कॉल करता है जो मेरे परीक्षणों का निर्माण करने का ख्याल रखता है। यह कैसे मैं यह कर रहा है:

<target name="build-tests"> 
    <subant target="build"> 
     <fileset dir="${test.home}" includes="build.xml"/> 
    </subant> 
</target> 

चाल subant बजाय antcall उपयोग करने के लिए है। आपको अन्य बिल्ड फ़ाइल आयात करने की आवश्यकता नहीं है।

+0

यदि आपको उपांत लक्ष्य में क्लासपाथ समायोजित करने की आवश्यकता है तो क्या होगा? –

6

"एंटीकॉल" कार्य के बजाय "ant" task का उपयोग करने का प्रयास करें, जो वर्तमान निर्माण फ़ाइल में आयात करने के बजाय सीधे आयातित बिल्ड चलाता है। इसमें एक "डीआईआर" पैरामीटर है:

नई चींटी परियोजना के लिए के आधार पर उपयोग करने वाली निर्देशिका। पर वर्तमान प्रोजेक्ट के आधार पर, प्राप्तकर्ता को में गलत पर सेट किया गया है, जिस स्थिति में इसका डिफ़ॉल्ट मान नहीं है। यह कहा जाता है इस परियोजना के basedir सेटिंग पर आ जाएगी।

तो तुम कर सकता है:

<ant antfile="${baseDirUpOne}/utils/build/build.xml" dir="../utils/build" /> 

या ऐसा ही कुछ।

+2

उस <चींटी ... को

0

आप पास कर सकते हैं नीचे params antcall ब्लॉक में नेस्ट का उपयोग antcall करने के लिए। तो, आप गुणों को इस तरह से पारित कर सकते हैं (शायद यहां तक ​​कि आधार पर भी गुणक अपरिवर्तनीय हैं)।

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