Apache Ant-এ <macrodef>
টাস্কটি একটি খুব শক্তিশালী টুল যা আপনাকে পুনঃব্যবহারযোগ্য টাস্ক ম্যাক্রো তৈরি করতে সাহায্য করে। এটি আপনাকে একাধিক টাস্কের সেট বা ব্লক তৈরি করার সুযোগ দেয়, যা পরবর্তীতে Ant বিল্ড স্ক্রিপ্টে বিভিন্ন জায়গায় পুনরায় ব্যবহার করা যায়।
Macrodef টাস্ক ব্যবহার করে আপনি একাধিক টাস্ককে একটি কাস্টম টাস্কের মতো গ্রুপ করতে পারেন এবং তারপর সেই টাস্কটি পুনরায় অন্য টার্গেট বা টাস্কে ব্যবহার করতে পারেন। এটি বিশেষভাবে উপকারী যখন একাধিক টার্গেট বা স্ক্রিপ্টে একই ধরনের কার্যক্রম বা টাস্ক চালাতে হয়।
<macrodef name="macro_name">
<attribute name="param1" />
<attribute name="param2" />
<sequential>
<!-- Define tasks that make up the macro -->
</sequential>
</macrodef>
এটি একটি সহজ উদাহরণ যেখানে একটি macrodef টাস্ক ব্যবহার করে পুনঃব্যবহারযোগ্য একটি টাস্ক তৈরি করা হয়েছে যা কনসোলে বার্তা প্রিন্ট করবে।
build.xml
)<project name="MacrodefExample" default="useMacro" basedir=".">
<!-- Defining a macro -->
<macrodef name="printMessage">
<attribute name="message" />
<sequential>
<echo message="${message}" />
</sequential>
</macrodef>
<target name="useMacro">
<!-- Using the macro -->
<printMessage message="Hello from the macro!" />
<printMessage message="This is reusable!" />
</target>
</project>
এখানে:
<macrodef name="printMessage">
: একটি ম্যাক্রো তৈরি করা হয়েছে যার নাম printMessage
।<attribute name="message" />
: একটি ইনপুট প্যারামিটার message
তৈরি করা হয়েছে, যা ম্যাক্রো ব্যবহার করার সময় পাস করা হবে।<sequential>
: ম্যাক্রোর কার্যক্রম। এখানে কেবল <echo>
টাস্ক ব্যবহার করা হচ্ছে, যা message প্যারামিটারটি কনসোলে প্রিন্ট করবে।<printMessage message="..."/>
: এই টাস্কের মাধ্যমে ম্যাক্রোটি দুইবার ব্যবহার করা হচ্ছে, এবং প্রত্যেকবার একটি নতুন বার্তা প্রিন্ট করা হবে।Hello from the macro!
This is reusable!
এখানে একটি উদাহরণ দেওয়া হলো যেখানে একটি macrodef টাস্কের মধ্যে একাধিক টাস্ক রয়েছে, এবং এটি পুনঃব্যবহার করা হচ্ছে।
<project name="ComplexMacroExample" default="useMacro" basedir=".">
<!-- Defining a complex macro -->
<macrodef name="copyAndPrint">
<attribute name="src" />
<attribute name="dest" />
<sequential>
<copy file="${src}" tofile="${dest}" />
<echo message="File copied from ${src} to ${dest}" />
</sequential>
</macrodef>
<target name="useMacro">
<!-- Using the macro with different parameters -->
<copyAndPrint src="source.txt" dest="destination.txt" />
<copyAndPrint src="config.xml" dest="config_backup.xml" />
</target>
</project>
এখানে:
<macrodef name="copyAndPrint">
: একটি copyAndPrint
ম্যাক্রো তৈরি করা হয়েছে যা দুটি টাস্ককে একত্রে কার্যকর করে:<copy>
: একটি ফাইল কপি করার টাস্ক।<echo>
: কপি করার পর কনসোলে বার্তা প্রিন্ট করার টাস্ক।<copyAndPrint src="source.txt" dest="destination.txt" />
: এই ম্যাক্রোটি ব্যবহার করে দুটি আলাদা ফাইল কপি করা হচ্ছে এবং কনসোলে বার্তা প্রিন্ট করা হচ্ছে।File copied from source.txt to destination.txt
File copied from config.xml to config_backup.xml
আপনি <macrodef>
টাস্কের মধ্যে default মান ব্যবহার করতে পারেন, যা কোনো প্যারামিটার পাস না করলে স্বয়ংক্রিয়ভাবে ব্যবহার হবে।
<project name="MacrodefWithDefaultExample" default="useMacro" basedir=".">
<!-- Defining a macro with default values -->
<macrodef name="printGreeting">
<attribute name="name" default="Guest" />
<sequential>
<echo message="Hello, ${name}!" />
</sequential>
</macrodef>
<target name="useMacro">
<!-- Using the macro without passing the 'name' parameter -->
<printGreeting />
<!-- Using the macro with a custom 'name' -->
<printGreeting name="John" />
</target>
</project>
এখানে:
default="Guest"
: যদি name
প্যারামিটারটি পাস না করা হয়, তাহলে Guest
হবে ডিফল্ট মান।<printGreeting />
টাস্কে name
প্যারামিটার পাস না করলে ডিফল্ট Guest
মান ব্যবহার হবে।<printGreeting name="John" />
টাস্কে name
প্যারামিটার পাস করা হয়েছে, তাই সেখানে John
ব্যবহার হবে।Hello, Guest!
Hello, John!
Macrodef টাস্কের মধ্যে আপনি একাধিক ম্যাক্রোও ব্যবহার করতে পারেন, যাতে একটি ম্যাক্রো অন্য একটি ম্যাক্রোকে কল করতে পারে।
<project name="NestedMacroExample" default="useMacro" basedir=".">
<!-- Defining the first macro -->
<macrodef name="printHeader">
<attribute name="title" />
<sequential>
<echo message="===== ${title} =====" />
</sequential>
</macrodef>
<!-- Defining the second macro that calls the first -->
<macrodef name="printContent">
<attribute name="content" />
<sequential>
<printHeader title="Content Start" />
<echo message="${content}" />
<printHeader title="Content End" />
</sequential>
</macrodef>
<target name="useMacro">
<!-- Using the nested macro -->
<printContent content="This is the body of the content." />
</target>
</project>
এখানে:
<printHeader>
ম্যাক্রোটি একটি হেডার বার্তা প্রিন্ট করবে।<printContent>
ম্যাক্রোটি <printHeader>
ম্যাক্রোকে কল করে কনটেন্ট শুরু এবং শেষের হেডার প্রিন্ট করবে, এবং তার মধ্যে কনটেন্ট প্রিন্ট করবে।===== Content Start =====
This is the body of the content.
===== Content End =====
Macrodef Task হল Ant-এ একটি শক্তিশালী টুল যা আপনাকে reusable tasks তৈরি করতে সাহায্য করে। আপনি Ant স্ক্রিপ্টে বিভিন্ন টাস্ক বা কার্যক্রম একত্রিত করে একটি ম্যাক্রো তৈরি করতে পারেন এবং তারপর এটি একাধিক জায়গায় ব্যবহার করতে পারেন। এর মাধ্যমে আপনি বিল্ড প্রক্রিয়া আরও সংগঠিত এবং কার্যকরী করতে পারেন। Macrodef টাস্কের সাহায্যে:
এটি Ant স্ক্রিপ্টে পুনঃব্যবহারযোগ্য কার্যক্রম তৈরি করার একটি চমৎকার উপায়।
common.read_more