2009-05-04 8 views
7

मेरे पास एक से अधिक मॉड्यूल के साथ एक प्रोजेक्ट है, प्रत्येक अपनी निर्देशिका में है। प्रत्येक मॉड्यूल का अपना चींटी निर्माण फ़ाइल (build.xml)उपनिर्देशिका में एकाधिक build.xml फ़ाइलों को एंटी लक्ष्य पास करें

रूट निर्देशिका मैं एक सामान्य निर्माण फ़ाइल है कि सही क्रम में प्रत्येक मॉड्यूल के निर्माण फ़ाइल कॉल को सेट कर लेने में है।

<?xml version="1.0"?> 
<project name="bridgedb" default="all" basedir="."> 
    <target name="all"> 
    <ant dir="corelib"/> 
    <ant dir="tools"/> 
    <ant dir="makeGdb"/> 
    <ant dir="cytoscape-plugin"/> 
    </target> 
</project> 

अब प्रत्येक मॉड्यूल भी एक "क्लीन" लक्ष्य है, तो मैं इन पंक्तियों जोड़ें:

<target name="clean"> 
    <ant dir="corelib" target="clean"/> 
    <ant dir="tools" target="clean"/> 
    <ant dir="makeGdb" target="clean"/> 
    <ant dir="cytoscape-plugin" target="clean"/> 
    </target> 

और उस तरह के और अधिक लक्ष्यों को देखते हैं। क्या इस डुप्लिकेशन से बचने के लिए बिल्ड फ़ाइल को फिर से लिखने का कोई तरीका है? मैंने एक अंतर्निहित संपत्ति की तलाश की है जिसमें सक्रिय लक्ष्य है, लेकिन मुझे यह नहीं मिला।

उत्तर

7

antcall का उपयोग अपने लक्ष्य के कॉल करने के लिए antcall का उपयोग क्यों न करें, और लक्ष्य को पैरामीटर करने के लिए पैरामीटर करें। जैसे

<antcall target="doStuffToSubdirs"> 
    <!-- let's clean --> 
    <param name="param1" value="clean"/> 
    </antcall> 

और उसके बाद:

<target name="doStuffToSubdirs"> 
    <ant dir="corelib" target="${param1}"/> 
    <ant dir="tools" target="${param1}"/> 
    ...etc 
</target> 

तो यह है कि आप अपने उपनिर्देशिका के लिए कॉल parameterise की अनुमति देता है। यदि आप एक नया उपदिर जोड़ते हैं, तो आपको केवल उस उपदिर को 'doStuffToSubdirs' लक्ष्य में जोड़ना होगा (मैं उसका नाम बदल दूंगा!)

+0

यूप यह काम करता है, धन्यवाद। – amarillion

+0

हालांकि यह amarillion

+0

मुझे लगता है कि अब सही कर देंगे। सिर के लिए Thx (मैं स्वीकार करता हूं कि मैंने परीक्षण नहीं किया था :-) –

2

अपने commonbuild.xml में और बच्चे में एक स्वच्छ लक्ष्य रखो बस अपने माता पिता build.xml

<import file="${parent.dir}/commonbuild.xml" /> 

आयात फ़ाइलें अब आप अपने बच्चे में बनाता है स्वच्छ लक्ष्य फोन करने के लिए सक्षम हो जाएगा। आप अपने किसी भी बच्चे के निर्माण में एक स्वच्छ लक्ष्य बनाकर इस लक्ष्य को ओवरराइड भी कर सकते हैं।

+0

यदि मैं इसे सही ढंग से समझता हूं, तो यह मानता है कि "साफ" लक्ष्य बिल्कुल वही करता है प्रत्येक उपनिर्देशिका में बात। लेकिन यह मामला नहीं है, खासतौर पर उन अन्य लक्ष्यों के लिए नहीं जिन्हें मैं उसी तरह कॉल करना चाहता हूं। – amarillion

+0

आप सही हैं मैंने आपके प्रश्न को गलत समझा। –

+0

एनपी, यह एक उपयोगी चाल भी है कि मैं किसी और दिन :) – amarillion

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

  • कोई संबंधित समस्या नहीं^_^