मैंने copydir
एक डायरेक्टरी ट्री को कॉपी करने के लिए उपयोग किया है, लेकिन इसे हटा दिया गया है। मेरी निर्देशिका में कुछ उप-निर्देशिकाएं हैं, और उनमें से कुछ में फाइलें हैं और अन्य में अधिक उप-निर्देशिकाएं हैं।
मैं पूरे पेड़ की नकल कैसे कर सकता हूं?
मैंने copydir
एक डायरेक्टरी ट्री को कॉपी करने के लिए उपयोग किया है, लेकिन इसे हटा दिया गया है। मेरी निर्देशिका में कुछ उप-निर्देशिकाएं हैं, और उनमें से कुछ में फाइलें हैं और अन्य में अधिक उप-निर्देशिकाएं हैं।
मैं पूरे पेड़ की नकल कैसे कर सकता हूं?
जवाबों:
<copy todir="${dest.dir}" >
<fileset dir="${src.dir}" includes="**"/>
</copy>
विश्वास करो कि तुम क्या चाहते हो जाएगा ... (पुनरावर्ती कॉपी)
includes
यह आवश्यक नहीं है जब आप सब कुछ चाहते हैं (उपयोगकर्ता s1n द्वारा जवाब देखें )
निर्देशिका सहित सामग्री की प्रतिलिपि बनाएँ।
<copy todir="${dest.dir}" >
<fileset dir="${src.dir.parent}">
<include name="${src.dir}/**"/>
</fileset>
</copy>
नोट: $ {src.dir} $ {src.dir.parent} के सापेक्ष है, और पूर्ण पथ नहीं है
x.parent
होने वाले माना जाता है parent
की x
... -_-
आपको केवल निर्देशिका निर्दिष्ट करनी चाहिए (जिसमें संपत्ति शामिल है):
<copy todir="../new/dir">
<fileset dir="src_dir"/>
</copy>
अधिक विवरण और उदाहरणों के लिए मैनुअल देखें ।
निर्देशिका सहित सामग्री की प्रतिलिपि बनाएँ।
<copy todir="${dest.dir}" >
<fileset dir="${src.dir.parent}" includes="${src.dir}/**"/>
</copy>
एक ठीक बिंदु: चींटी केवल उप-निर्देशिकाओं की नकल करेगी यदि स्रोत फ़ाइलें गंतव्य फ़ाइलों की तुलना में नई हैं। [१] मेरे मामले में, उप-डायर की नकल नहीं की जा रही थी (मैं क्रिया = "सत्य" का उपयोग कर रहा हूँ), क्योंकि कोई परिवर्तन नहीं हुआ था और वे पहले से ही गंतव्य में थे। आप इसे बाध्य करने के लिए "ओवरराइट" का उपयोग कर सकते हैं, या अपने स्रोत उप-डायरियों में कुछ फाइलों को छू सकते हैं।
मैंने अपनी बिल्ड.xml फ़ाइल में नीचे दिए गए कोड स्निपेट में दिखाए गए टैगों को शामिल किया।
<target name="devInstall" depends="generateXsl" description="testing">
<copy flatten="true" todir="${test}/WEB-INF/lib" overwrite="${overwrite}">
<fileset refid="buildJars"/>
<fileset dir="lib">
<include name="commons-collections-*.jar"/>
<include name="commons-io-*.jar"/>
<include name="kodo/*.jar"/>
<include name="mail*.jar"/>
<include name="activation*.jar"/>
<include name="guava*.jar"/>
<include name="jna*.jar"/>
</fileset>
</copy>
</target>
यहां उदाहरण से , आप कॉपी कार्य का उपयोग करके एक सरल चींटी फ़ाइल लिख सकते हैं।
<project name="MyProject" default="copy" basedir=".">
<target name="copy">
<copy todir="./new/dir">
<fileset dir="src_dir"/>
</copy>
</target>
</project>
यह सब कुछ अंदर src_dir
(इसे छोड़कर) को कॉपी करना चाहिए new/dir
।
एक अन्य चींटी कार्य कोपिडिर है । यहां पर प्रमुख भाग उस निर्देशिका का नाम शामिल करना है जिसे आप गंतव्य निर्देशिका के बाद कॉपी करना चाहते हैं। उप-निर्देशिका और फ़ाइलों को स्वचालित रूप से कॉपी किया जाएगा।
<target name="-post-jar">
<copydir src="config" dest="${dist.dir}/config/"/>
</target>
इस कोड को फ़ोल्डर के साथ-साथ उसकी सामग्री को भी कॉपी करना चाहिए। यह किसी भी मैनुअल पथ पार्सिंग को करने से बचने के लिए बेसनेम कार्य का भी उपयोग करता है।
<project name="Build" default="doCopy">
<property name="source.dir" value="SourceDirPathGoesHere"/>
<property name="dest.dir" value="DestinationDirPathGoesHere"/>
<target name="doCopy">
<basename property="source.dir.base.name" file="${source.dir}"/>
<copy todir="${dest.dir}">
<fileset dir="${source.dir}/.." includes="${source.dir.base.name}/**"/>
</copy>
</target>
</project>
मैंने अंत में निम्नलिखित कोड का उपयोग करके कॉपी किया
<copy todir="${root.dir}/dist/src">
<fileset dir="${root.dir}/build/src" includes="**"/>
</copy>
यह निर्माण करने के लिए दूर से src फ़ोल्डर की नकल करेगा।
आशा है कि यह किसी की मदद करता है।