2009-11-04 13 views
8

के भीतर से एंटी स्क्रिप्ट स्थान का संदर्भ देना मेरे पास एक उपयोगिता निर्माण स्क्रिप्ट है जिसे बिल्ड सर्वर पर विभिन्न प्रकार के प्रोजेक्ट-विशिष्ट बिल्ड स्क्रिप्ट से बुलाया जाता है। सबकुछ ठीक काम करता है, जब तक सापेक्ष निर्देशिका संरचना में परिवर्तन नहीं होता है। यही कारण है:चींटी फ़ाइल

trunk/ 
    utilities/ 
     imported.xml 
     some_resource_file 
    projectName/ 
     importing.xml 

बस ठीक काम करता है, लेकिन कभी कभी हम की जरूरत है:

trunk/ 
    importing.xml 
    utilities/ 
     imported.xml 
     some_resource_file 
    projectName/ 

समस्या यह है कि imported.xml जरूरतों some_resource_file और वर्तमान में ../utilities/some_resource_file का हवाला देते हुए यह करने के लिए जाता है। यह स्पष्ट रूप से पहले मामले में काम करता है क्योंकि कामकाजी निर्देशिका utilities का भाई है।

क्या imported.xml के लिए यह जानने का कोई आसान तरीका है कि यह किस निर्देशिका में है, dirname $0 के बराबर कुछ है? या क्या मुझे ऐसा करना है कि मुझे किसी भी तरह से आयात करने वाली लिपि से इंजेक्ट करना है? आयात की गई फ़ाइल के खिलाफ

http://ant.apache.org/manual/Tasks/import.html

चेक के तहत हल करने फाइलें:

उत्तर

19

सुनिश्चित करें कि imported.xml name विशेषता के साथ प्रोजेक्ट को परिभाषित करता है। फिर आप ant.file.name संपत्ति के माध्यम से चींटी फ़ाइल के पूर्ण पथ के लिए उस नाम का उपयोग कर सकते हैं।

मैंने आयातित पूंजीकृत किया है, ताकि आप इसे आसानी से कोड में देख सकें।

<project 
    name="IMPORTED" 
> 
    <dirname 
    property="IMPORTED.basedir" 
    file="${ant.file.IMPORTED}" 
    /> 
    <property name="myresource" 
    location="${IMPORTED.basedir}/some_resource_file" 
    /> 
</project> 
+0

यह बहुत अच्छा काम करता है। मुझे मैनुअल में जवाब मिला, लेकिन यहां केवल लिंक कॉपी किया गया। शायद यह उन लोगों की मदद करेगा जिन्हें चींटी मैनुअल नेविगेट करना आसान नहीं लगता है। –