यह मेरे लिए थोड़ा दूर लाता है, लेकिन क्या परिवर्तन के लिए निर्देशिका देखने के लिए एक एएनटी कार्य है और फिर निर्देशिका बदलते समय एक विशेष एएनटी कक्षा चला रहा है?क्या परिवर्तन के लिए निर्देशिका देखने के लिए कोई एएनटी कार्य है?
उत्तर
यदि फ़ाइलों को केवल देखे गए निर्देशिका में जोड़ा या बदला जा सकता है, तो आप antcontrib से इस सरल OutOfDate कार्य का उपयोग कर सकते हैं।
<property name="watched-dir.flagfile"
location="MUST be not in watched dir"/>
<outofdate>
<sourcefiles>
<fileset dir="watched-dir"/>
</sourcefiles>
<targetfiles>
<pathelement location="${watched-dir.flagfile}"/>
</targetfiles>
<sequential>
<!--Tasks when something changes go here-->
<touch file="${watched-dir.flagfile}"/>
</sequential>
</outofdate>
फ़ाइलों देखा-निर्देशिका से गायब हो सकते हैं, तो आप और अधिक जटिल समस्या यह है कि आप देख चुके हैं dir की छाया निर्देशिका संरचना बनाने और देखा-निर्देशिका के साथ अपने संगत करता है, तो जाँच करके हल कर सकते हैं है। इस कार्य को और अधिक जटिल है, लेकिन मैं आपको, एक छाया निर्देशिका बनाने के लिए एक स्क्रिप्ट दे देंगे के रूप में यह सीधे आगे नहीं है:
<property name="TALK" value="true"/>
<property name="shadow-dir"
location="MUST be not in watched dir"/>
<touch
mkdirs="true"
verbose="${TALK}"
>
<fileset dir="watched-dir">
<patterns/>
<type type="file"/>
</fileset>
<!-- That's the tricky globmapper to make touch task work -->
<globmapper from="*" to="${shadow-dir}/*"/>
</touch>
<!--
Due to how touch task with mapped fileset is implemented, it
truncates file access times down to a milliseconds, so if you
would have used outofdate task on shadow dir it would always
show that something is out of date.
Because of that, touching all files in ${shadow-dir} again fixes
that chicken and egg problem.
-->
<touch verbose="${TALK}">
<fileset dir="${shadow-dir}"/>
</touch>
बनाया छाया निर्देशिका के साथ, मैं के रूप में जाँच निर्देशिका स्थिरता का कार्य छोड़ देंगे पाठक के लिए एक अभ्यास।
इससे कोई फ़र्क नहीं पड़ता कि लक्ष्य निर्देशिका में स्रोत निर्देशिका की तुलना में पुरानी फ़ाइलें हैं या नहीं। मुझे एक चींटी कार्य चाहिए जो निर्देशिका को देखेगा और जब मैं संपादक में फ़ाइल में परिवर्तनों को सहेजता हूं, तो यह एक विशेष चींटी कार्य को कॉल करेगा। – leeand00
आप जो भी चाहते हैं उसे प्राप्त करने के लिए Waitfor
कार्य का उपयोग करने में सक्षम हो सकते हैं। यह तब तक अवरुद्ध करता है जब तक एक या अधिक स्थितियों (जैसे कि किसी विशेष फ़ाइल की उपस्थिति) सच हो जाती है।
आपने ऐसे बदलाव के लिए एक संग्रहीत MD5 चेकसम के खिलाफ फ़ाइलों की जाँच करेगा एक fileset selector
<apply executable="somecommand" parallel="false">
<srcfile/>
<fileset dir="${watch.dir}">
<modified/>
</fileset>
</apply>
फ़ाइलसेट साथ apply कार्य जोड़ सकते हैं। इस चेक को बार-बार चलाने के लिए आपको एएनटी को लूप में रखना होगा। इस यूनिक्स में करने के लिए आसान है:
while true
> do
> ant
> sleep 300
> done
हाँ वहाँ एक चींटी कार्य है कि यह कर देगा है:
https://github.com/chubbard/WatchTask
यह 1.7+ की आवश्यकता है। यह किसी भी फाइलसेट को देख सकता है, और किसी भी लक्ष्य का आह्वान कर सकता है कि यह किस फाइलसेट से आया था।
लाइसेंस नहीं है ... :( –
@ जेथ्रोलार्सन अब यह करता है। उसी दिन आपकी टिप्पणी के रूप में जोड़ा गया है, ऐसा लगता है। :) – kekkis
ने अभी तक इसका उपयोग कैसे किया है, यह नहीं पता कि कहां है जार को उनके संदर्भ में, पर्याप्त दस्तावेज़ीकरण नहीं ढूंढने के लिए। – Vadorequest
खैर मुझे इस के लिए आसान समाधान नहीं मिला है, इसलिए मैं उस समय के लिए एक बैश विशिष्ट कमांड का उपयोग कर रहा हूं: 'inoticoming --foreground ./src/ ant \;' –
leeand00