में एक खाली प्लेसहोल्डर फाइलसेट बनाना, तो यहां स्थिति है: मेरे पास एक अभिभावक बिल्डफाइल है जो एक संकलन कार्य को परिभाषित करता है, और मैं चाहता हूं कि बाल बिल्डफाइल वैकल्पिक रूप से क्लासपाथ पर अधिक जेएआर (जो कहीं भी हो) जोड़ सकें उस संकलन कार्य द्वारा उपयोग किया जाता है।चींटी
सभी बच्चे बिल्डफाइलों में इन अतिरिक्त निर्भरताएं नहीं होंगी, इसलिए मैं उन्हें अतिरिक्त निर्भरता फाइलसेट को परिभाषित करने के लिए मजबूर नहीं करना चाहता हूं। उन्हें सिर्फ माता-पिता को शामिल करने में सक्षम होना चाहिए, और संकलन कार्य केवल काम करना चाहिए।
(स्पष्ट रूप से अन्य आवश्यक गुण हैं जो स्रोत निर्देशिका को कॉन्फ़िगर करते हैं और इसी तरह, लेकिन वे इसमें प्रवेश नहीं करते हैं। साथ ही, वास्तविक शामिल/विरासत समस्या एक और अधिक जटिल है, लेकिन उम्मीद है कि जो भी सही चीज है के लिए सरल मामले जटिल मामले में भी काम कर रहा है होगा)
मैं कुछ है कि काम करता है:। माता-पिता buildfile में संकलन कार्य परवाह किए बिना अतिरिक्त निर्भरता फ़ाइलसेट को दर्शाता है:
<target name="compile" depends="init-additional-dependencies">
<fileset id="global.dependency.fileset" dir="${global.library.directory}">
<include name="**/*.jar"/>
</fileset>
<javac ...>
<classpath>
<!-- should be the same for all buildfiles -->
<fileset refid="global.dependency.fileset"/>
<!-- should be populated by child buildfiles -->
<fileset refid="additional.dependency.fileset"/>
</classpath>
</javac>
</target>
... और अभिभावक buildfile में एक ऐसा कार्य भी है जो इस फाइलसेट को खाली बनाता है, ताकि जावैक उड़ न सके। हालांकि, जिस तरह से मैं खाली फ़ाइलसेट बना रहा हूं बासी है:
<target name="init-additional-dependencies">
<!-- override me! -->
<fileset id="additional.dependency.fileset" dir=".">
<include name="placeholder.does.not.exist.so.fileset.is.empty"/>
</fileset>
</target>
यह काम करता है, लेकिन गूंगा लगता है, और यह विश्वास करना एक बेहतर तरीका नहीं है मुश्किल है। वह बेहतर दृष्टिकोण क्या है?
बहुत दिलचस्प सवाल +1:
बच्चों कि अतिरिक्त कलाकृतियों जोड़े जाने के लिए की आवश्यकता के लिए, बच्चे के निर्माण फ़ाइल में फ़ाइलसेट को परिभाषित । परेशानी आपकी डार्टसेट का उपयोग करती है "।" जो हमेशा मौजूद है। यदि आपके पास अतिरिक्त निर्भरता जार (कहें ./deps/) रखने के लिए नामकरण सम्मेलन पर कुछ प्रकार है, तो आप 'erroronmissingdir = false' के साथ डार्टसेट बना सकते हैं। – Jayan