আমি 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>
দ্রষ্টব্য: $ rc src.dir} $ rc src.dir.parent to এর সাথে সম্পর্কিত, এবং একটি সম্পূর্ণ পাথ নয়
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>
একটি সূক্ষ্ম বিন্দু: পিঁপড়া কেবলমাত্র ডিরেক্টরিগুলি অনুলিপি করবে যদি উত্স ফাইলগুলি গন্তব্য ফাইলগুলির চেয়ে নতুন হয়। [1] আমার ক্ষেত্রে, সাব-ডায়ারগুলি অনুলিপি করা হচ্ছে না (আমি ক্রিয়াপদ = "সত্য" ব্যবহার করছি), কারণ কোনও পরিবর্তন হয়নি এবং তারা ইতিমধ্যে গন্তব্যে ছিল। আপনি এটিকে জোর করার জন্য "ওভাররাইট" ব্যবহার করতে পারেন, বা আপনার উত্স সাব-ডায়ারের কয়েকটি ফাইল স্পর্শ করতে পারেন।
আমি আমার বিল্ড.এক্সএমএল ফাইলের নীচে কোড স্নিপেটের মতো ডিরেক্টরিগুলির মধ্যে স্বতন্ত্র জার ফাইলগুলি অনুলিপি করতে ট্যাগগুলি অন্তর্ভুক্ত ব্যবহার করেছি।
<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>
এটি ডিআরসি থেকে বিল্ড করার জন্য এসসিআর ফোল্ডারটি অনুলিপি করবে।
আশা করি এটি কাউকে সাহায্য করবে।