में कार्यावधि में गतिशील सामग्री के साथ एक संघ और Macrodef शैली तत्व मैं एक निर्माण स्क्रिप्ट चींटी में बनाया गया है जो एक macrodef कि कुछ डिफ़ॉल्ट पैरामीटर, लक्ष्य, जड़ और की तरह, और एक वैकल्पिक दो लेता है तो है है बनाएं , extrasrc-f और extrasrc-c। आने के बाद, मैं सभी प्रासंगिक संसाधनों पर एक अपरिवर्तनीय जांच करना चाहता हूं, फिर लक्ष्य समाप्त होने पर केवल एक बिल्ड करें।चींटी
क्या मैं इस समय है,
<?xml version="1.0" encoding="UTF-8"?>
<project name="Custom build" default="default">
<taskdef resource="net/sf/antcontrib/antlib.xml"
classpath="C:/dev/ant/ant-contrib/ant-contrib-1.0b3.jar"/>
<macrodef name="checkuptodate">
<attribute name="target" />
<element name="resource" />
<sequential>
<condition property="needbuild">
<and>
<resourcecount when="greater" count="0"> <resource /> </resourcecount>
<not>
<uptodate targetfile="@{target}">
<srcresources> <resource /> </srcresources>
</uptodate>
</not>
</and>
</condition>
</sequential>
</macrodef>
<macrodef name="projbuild">
<attribute name="root" />
<attribute name="target" />
<element name="extrasrc-f" optional="true" />
<element name="extrasrc-c" optional="true" />
<sequential>
<local name="needbuild" />
<checkuptodate target="@{root}/bin/@{target}">
<resource>
<union>
<extrasrc-f />
<fileset dir="@{root}/src" includes="**/*.java" />
</union>
</resource>
</checkuptodate>
<if>
<istrue value="${needbuild}" />
<then>
<javac
srcdir="@{root}/src"
destdir="@{root}/bin"
includeantruntime="false"
>
<extrasrc-c />
</javac>
</then>
</if>
</sequential>
</macrodef>
<target name="default">
<projbuild root="." target="EntryPoint.class">
<extrasrc-f>
<fileset dir="Proj2/src" includes="**/*.java" />
<fileset dir="Proj3/src" includes="**/*.java" />
</extrasrc-f>
<extrasrc-c>
<classpath location="Proj2/src" />
<classpath location="Proj3/src" />
</extrasrc-c>
</projbuild>
</target>
</project>
लेकिन जैसा कि आप समय में इस बिंदु पर, देख सकते हैं, मेरे लिए यह अक्षम है, मैं क्या चाहते करने के लिए, मैं बना सकते हैं और पर में पारित करने के लिए है कम से कम एक फाइलसेट, और एकाधिक क्लासपाथ। मैं वास्तव में क्या करना चाहता हूं बस निर्देशिकाओं की सूची में पास हो गया है, फिर उस जानकारी से फ्लाई पर एक्स्ट्राक्रैक-एफ और एक्स्ट्रास्ट्रैक-सी तत्व बनाएं, लेकिन मेरे जीवन के लिए, मुझे नहीं पता कि मैं कैसे ' मैं ऐसा करने में सक्षम हूँ।
मैंने कई चींटी चींटी और चींटी-कॉन्ट्रिब फंकी कक्षाओं के बारे में बहुत कुछ पढ़ा है, लेकिन मैंने कुछ भी नहीं पढ़ा है जो मुझे ऐसा कुछ करने की अनुमति देगा, जो मुझे अजीब लगता है, क्योंकि मेरे लिए यह एक दिखता है स्पष्ट स्थिति
क्या मैं इसे बहुत गलत तरीके से देख रहा हूं, या क्या मुझे कुछ याद आ रहा है? अगर मैं वास्तव में चींटी का दुरुपयोग कर रहा हूं, तो मुझे सही दिशा में पॉइंटर्स से यह अच्छा लगेगा कि मैकोडेफ़ में कैचॉल, टेम्प्लेट बिल्ड (या लक्ष्य, अगर ऐसा करने का एकमात्र तरीका है) जो एकाधिक स्रोतों का परीक्षण करता है एक फ़ाइल के खिलाफ फाइलें जो बनती हैं, जबकि अतिरिक्त कक्षा या लाइब्रेरी पथ में भी गुजरती हैं, अधिमानतः एक ही सूची में।
, ओह, धीमी प्रतिक्रिया के लिए क्षमा करें। –
हाहा, मार्टिन की चिंता न करने के लिए, देर से भी, एक प्रतिक्रिया हमेशा सराहना की जाती है। चूंकि मैंने इस सवाल से पूछा, मैं अब एक ही कंपनी के साथ नहीं हूं, लेकिन मैं नियमित रूप से चींटी स्क्रिप्ट के साथ नियमित रूप से खेलता हूं, और स्क्रिप्टडेफ़ का कोई विचार नहीं था, इसके लिए बहुत बहुत धन्यवाद! – seaders