Properties হল ANT-এর একটি গুরুত্বপূর্ণ ফিচার যা আপনাকে বিভিন্ন মান বা কনফিগারেশন ডেটা সংরক্ষণ এবং পুনঃব্যবহার করতে সাহায্য করে। এটি বিশেষত বড় প্রকল্পগুলিতে কাজ করার সময় দরকারী, কারণ এতে কোডের পুনঃব্যবহারযোগ্যতা বাড়ে এবং পুরো বিল্ড স্ক্রিপ্টের রক্ষণাবেক্ষণ সহজ হয়।
Properties কি?
ANT-এর Properties হলো এমন নাম-মান পেয়ার যা বিল্ড ফাইলে বিভিন্ন স্থান থেকে অ্যাক্সেস করা যায়। একবার প্রপার্টি সেট করা হলে, আপনি সেই প্রপার্টি ভ্যালুকে একাধিক টার্গেট বা টাস্কে পুনরায় ব্যবহার করতে পারেন। প্রপার্টি সাধারণত immutable (অপরিবর্তনীয়) হয়, অর্থাৎ একবার সেট করার পরে আপনি তার মান পরিবর্তন করতে পারবেন না।
Properties কিভাবে কাজ করে
প্রপার্টি সেট করতে এবং ব্যবহার করতে নিচে কিছু উদাহরণ দেওয়া হলো:
প্রপার্টি সেট করা
<property name="src.dir" value="src"/>
<property name="build.dir" value="build"/>
<property name="jar.name" value="my-app.jar"/>
এই উদাহরণে:
src.dirহলো সোর্স ফাইলের ডিরেক্টরি।build.dirহলো কম্পাইলড ক্লাস ফাইল রাখার ডিরেক্টরি।jar.nameহলো জার ফাইলের নাম।
প্রপার্টি ব্যবহার করা
একবার প্রপার্টি সেট হলে, আপনি সেই প্রপার্টি টাস্ক বা টার্গেটে ব্যবহার করতে পারেন। উদাহরণস্বরূপ:
<target name="compile">
<javac srcdir="${src.dir}" destdir="${build.dir}"/>
</target>
<target name="package">
<jar destfile="${build.dir}/${jar.name}">
<fileset dir="${build.dir}"/>
</jar>
</target>
এখানে:
${src.dir}এবং${build.dir}ব্যবহার করা হয়েছেjavacএবংjarটাস্কে।${jar.name}ব্যবহার করা হয়েছে জার ফাইলের নামকে কনফিগার করতে।
Default Properties
ANT আপনাকে default প্রপার্টি সেট করার সুযোগও দেয়, যা যদি কোনো প্রপার্টি পূর্বে সেট না করা থাকে, তবে সেটি একটি ডিফল্ট মান হিসেবে কাজ করবে। উদাহরণ:
<property name="src.dir" value="src"/>
<property name="build.dir" value="build"/>
<property name="output.file" value="output.jar"/>
<target name="compile">
<javac srcdir="${src.dir}" destdir="${build.dir}"/>
</target>
<target name="package">
<jar destfile="${build.dir}/${output.file}">
<fileset dir="${build.dir}"/>
</jar>
</target>
এখানে, যদি output.file প্রপার্টি সেট না থাকে, তবে output.jar হিসেবে সেট করা থাকবে।
সিস্টেম প্রপার্টি
ANT-এ সিস্টেম প্রপার্টি ব্যবহার করা যায় যা আপনাকে সিস্টেম বা পরিবেশগত ভ্যারিয়েবলগুলির মান অ্যাক্সেস করার সুযোগ দেয়:
<property name="java.home" value="${java.home}"/>
এটি সিস্টেমের java.home প্রপার্টির মান ধারণ করবে।
অপারেটিং সিস্টেমের প্রপার্টি
ANT-এ অপারেটিং সিস্টেমের কিছু প্রপার্টি থাকে যা পরিবেশগত তথ্য সংগ্রহ করতে ব্যবহৃত হয়, যেমন:
os.name: অপারেটিং সিস্টেমের নাম।user.dir: কাজের ডিরেক্টরি।java.version: জাভা ভার্সন।
প্রপার্টি পরিবর্তন করা
ANT-এ একবার একটি প্রপার্টি সেট করার পর, আপনি সেই প্রপার্টির মান পরিবর্তন করতে পারবেন না, কারণ এটি immutable। তবে, আপনি নতুন প্রপার্টি তৈরি করতে পারেন। উদাহরণ:
<property name="debug" value="false"/>
<property name="debug" value="true" unless="debug"/>
এই ক্ষেত্রে, দ্বিতীয় debug প্রপার্টি প্রথমটি পরিবর্তন করবে না, তবে unless অ্যাট্রিবিউটের সাহায্যে দ্বিতীয়টি false হলে সেট হবে না।
ফিচার এবং সুবিধা
- ভ্যালু রিপিটিশন রিডাকশন:
প্রপার্টি ব্যবহারের মাধ্যমে, আপনি একাধিক টাস্কে একই মান ব্যবহারের পুনরাবৃত্তি এড়াতে পারেন, যেমন ডিরেক্টরি পথ বা ফাইল নাম। - কনফিগারেশন শেয়ারিং:
যদি আপনার প্রজেক্টে একাধিক বিল্ড স্ক্রিপ্ট থাকে, তবে আপনি একই প্রপার্টি বিভিন্ন স্ক্রিপ্টে শেয়ার করতে পারেন, যা প্রজেক্টের কনফিগারেশন সহজ করে তোলে। - ডাইনামিক কনফিগারেশন:
ANT আপনাকে শর্তাধীনভাবে প্রপার্টি ব্যবহার করতে দেয় (যেমনifএবংunless), যা ডাইনামিক কনফিগারেশন সম্ভব করে তোলে। - ডিফল্ট মান:
আপনিpropertyট্যাগ ব্যবহার করে সহজেই প্রপার্টির জন্য ডিফল্ট মান সেট করতে পারেন, যা কখনোই নির্দিষ্ট না করা হলে ব্যবহার করা হবে।
উদাহরণ: Complex Property Usage
<property name="src.dir" value="src"/>
<property name="build.dir" value="build"/>
<property name="output.dir" value="dist"/>
<target name="init">
<mkdir dir="${build.dir}"/>
<mkdir dir="${output.dir}"/>
</target>
<target name="compile" depends="init">
<javac srcdir="${src.dir}" destdir="${build.dir}"/>
</target>
<target name="package" depends="compile">
<jar destfile="${output.dir}/project.jar">
<fileset dir="${build.dir}"/>
</jar>
</target>
এখানে:
src.dirএবংbuild.dirপ্রপার্টি গুলি ব্যবহার করা হয়েছেjavacএবংjarটাস্কে।- বিল্ড প্রক্রিয়ায় কাজের ডিরেক্টরি এবং আউটপুট ডিরেক্টরি কনফিগার করা হয়েছে প্রপার্টির মাধ্যমে।
সারাংশ
- Properties ANT এর একটি গুরুত্বপূর্ণ ফিচার যা প্রজেক্টের কনফিগারেশন সহজ করে এবং কোডের পুনঃব্যবহারযোগ্যতা বৃদ্ধি করে।
- প্রপার্টি মান সেট করার পরে একাধিক টাস্ক এবং টার্গেটে ব্যবহার করা যায়।
- একবার সেট করা প্রপার্টি immutable হয়, কিন্তু এটি টাস্কের মধ্যে ডাইনামিক্যালি শর্তাধীনভাবে কাজ করতে পারে।
Read more