Apache Ant একটি শক্তিশালী বিল্ড টুল যা XML-based build scripts ব্যবহার করে বিভিন্ন কাজ পরিচালনা করতে সাহায্য করে। <antcall>
টাস্কটি অ্যাপাচি অ্যান্টে ব্যবহৃত হয় একটি টার্গেটকে অন্য টার্গেটের মধ্যে কল (invoke) করার জন্য। এটি আপনাকে একই বিল্ড স্ক্রিপ্টের মধ্যে এক টার্গেট থেকে অন্য টার্গেটকে কল করে কাজের ধারাবাহিকতা বা পুনঃব্যবহারযোগ্যতা নিশ্চিত করতে সাহায্য করে।
<antcall>
টাস্কটির মাধ্যমে আপনি একটি নির্দিষ্ট টার্গেটকে কেবল এক্সিকিউট করতে পারবেন এবং তা পরে একই স্ক্রিপ্টে ফিরে আসবে এবং কাজ সম্পন্ন করবে।
<antcall>
Task: Overview<antcall>
টাস্কটি বিল্ড স্ক্রিপ্টের মধ্যে একটি টার্গেটকে অন্য টার্গেটের মধ্যে কল (invoke) করতে ব্যবহৃত হয়। এটি মূলত একটি recursive মেকানিজম হিসেবে কাজ করে, যেখানে আপনি এক টার্গেটের মধ্যে অন্য টার্গেটকে কল করতে পারেন।
<antcall target="target_name"/>
target
: এটি সেই টার্গেটের নাম, যেটি আপনি কল করতে চান।<antcall>
Task: উদাহরণantcall
উদাহরণ:এখানে একটি সাধারণ উদাহরণ দেওয়া হলো যেখানে একটি টার্গেট build
এবং অন্য একটি টার্গেট clean
কল করা হচ্ছে।
<project name="AntcallExample" default="main-target">
<!-- Clean Target -->
<target name="clean">
<echo message="Cleaning the project..."/>
<delete dir="build"/>
</target>
<!-- Build Target -->
<target name="build">
<echo message="Building the project..."/>
</target>
<!-- Main Target that calls other targets -->
<target name="main-target">
<echo message="Starting the build process..."/>
<antcall target="clean"/>
<antcall target="build"/>
<echo message="Build process completed."/>
</target>
</project>
এখানে:
main-target
টাস্কটি প্রথমে clean
টার্গেটকে কল করছে এবং তারপর build
টার্গেটটিকে কল করছে।<antcall>
টাস্কের মাধ্যমে আপনি এক টার্গেটের মধ্যে অন্য টার্গেটগুলো কল করতে পারেন।antcall
উদাহরণ:আপনি <antcall>
টাস্কে প্যারামিটারও পাস করতে পারেন। এর মাধ্যমে আপনি একটি টার্গেটের জন্য চলতি প্রপার্টি বা প্যারামিটার পাঠাতে পারবেন।
<project name="AntcallWithParamsExample" default="main-target">
<!-- Clean Target -->
<target name="clean">
<echo message="Cleaning the project..."/>
<delete dir="build"/>
</target>
<!-- Build Target with Parameters -->
<target name="build">
<echo message="Building the project with version: ${project.version}"/>
</target>
<!-- Main Target that calls other targets and passes parameters -->
<target name="main-target">
<property name="project.version" value="1.0.0"/>
<echo message="Starting the build process..."/>
<antcall target="clean"/>
<antcall target="build"/>
<echo message="Build process completed."/>
</target>
</project>
এখানে:
<property>
টাস্ক ব্যবহার করে একটি প্রপার্টি project.version
সেট করা হয়েছে এবং তা build
টাস্কে পাস করা হয়েছে।build
টাস্কে ${project.version}
প্রপার্টি ব্যবহার করা হয়েছে এবং সেই মান আউটপুট করা হচ্ছে।antcall
Example:আপনি এক টার্গেটের মধ্যে অন্য টার্গেটের recursive call করতে পারেন। এর মাধ্যমে আপনি পুনরায় একটি টাস্ক কল করতে পারেন যা আবার সেই টাস্কের মধ্যে অন্যান্য টাস্ক কল করবে।
<project name="RecursiveAntcallExample" default="start-build">
<!-- A Target that calls itself -->
<target name="recursive-task" if="build.enabled">
<echo message="Running the recursive task..."/>
<antcall target="recursive-task"/>
</target>
<!-- Start Build Process -->
<target name="start-build">
<property name="build.enabled" value="true"/>
<echo message="Starting the recursive build..."/>
<antcall target="recursive-task"/>
</target>
</project>
এখানে:
<antcall>
টাস্ক recursive-task নামক টার্গেটকে পুনরায় কল করছে।if="build.enabled"
শর্তের মাধ্যমে, টাস্কটি কেবল তখনই কল হবে যখন build.enabled
প্রপার্টি true
হবে।<antcall>
Best Practicesif
and unless
Attributes:if
এবং unless
অ্যাট্রিবিউট ব্যবহার করুন। এটি টাস্কের এক্সিকিউশন নিয়ন্ত্রণে সহায়ক হবে।<antcall>
টাস্কে প্যারামিটার পাঠানোর মাধ্যমে টাস্কগুলিকে আরো ডাইনামিক এবং পুনঃব্যবহারযোগ্য করুন।<fail>
টাস্ক ব্যবহার করে ভুল শনাক্ত করুন এবং সেই অনুযায়ী বিল্ড প্রক্রিয়াটি বন্ধ করুন।<antcall>
টাস্ক অ্যাপাচি অ্যান্টের একটি অত্যন্ত শক্তিশালী টাস্ক, যা আপনাকে এক টার্গেট থেকে অন্য টার্গেট কল করতে সহায়তা করে। এটি বিশেষভাবে recursive tasks, parameters passing, এবং sequential task execution এর জন্য উপকারী। Best practices অনুসরণ করে <antcall>
টাস্ক ব্যবহার করলে আপনার বিল্ড স্ক্রিপ্ট আরও কার্যকরী, ডাইনামিক এবং পুনঃব্যবহারযোগ্য হবে।
common.read_more