Apache ANT-এর Properties হল ভেরিয়েবল যা বিভিন্ন বিল্ড টাস্ক বা স্টেপে ব্যবহার করা হয়। এরা সহজেই প্রজেক্টের কনফিগারেশন, পাথ, ফাইল পাথ ইত্যাদি সংরক্ষণ করতে সহায়ক। অনেক সময় প্রজেক্টে ডিফল্ট প্রপার্টি থাকতে পারে, তবে ব্যবহারকারী চাইলে তাদের মান পরিবর্তন করতে পারেন। Properties Override এর মাধ্যমে আপনি সহজে পূর্বনির্ধারিত প্রপার্টি পরিবর্তন বা অতিক্রম করতে পারেন।
১. Properties কী?
ANT এ Properties মূলত ভেরিয়েবল যা বিল্ড প্রক্রিয়ার মধ্যে বিভিন্ন মান রাখতে এবং ব্যবহার করতে সাহায্য করে। এগুলি সাধারণত build.xml ফাইলে <property> ট্যাগের মাধ্যমে সেট করা হয়।
উদাহরণ:
<property name="output.dir" value="build"/>
এখানে, output.dir প্রপার্টি মান build।
২. Properties Override করার পদ্ধতি
১. কমান্ড লাইন থেকে Properties Override
ANT প্রপার্টিগুলি কমান্ড লাইনে নির্দিষ্ট মান দিয়ে override করা যায়। এই পদ্ধতি দ্বারা, আপনি build.xml ফাইলে নির্দিষ্ট প্রপার্টি ছাড়া অন্য কোন মান সেট করতে পারবেন।
কমান্ড উদাহরণ:
ant -Doutput.dir=dist
এটি build.xml ফাইলে থাকা output.dir প্রপার্টির মান পরিবর্তন করে dist করে দিবে। কমান্ড লাইনে যেই প্রপার্টি ও মান উল্লেখ করা হয়, তা ঐ প্রকল্পের build.xml ফাইলে থাকা ডিফল্ট প্রপার্টির মানকে অতিক্রম (override) করবে।
build.xml উদাহরণ:
<project name="MyProject" basedir="." default="build">
<property name="output.dir" value="build"/>
<target name="build">
<echo message="Output Directory: ${output.dir}"/>
</target>
</project>
এটি ডিফল্টভাবে build ফোল্ডারকে output.dir হিসেবে ব্যবহার করবে। তবে, উপরের কমান্ডে আপনি output.dir=dist দিলে আউটপুট dist ফোল্ডারে হবে।
২. Property File থেকে Properties Override
অন্য একটি উপায় হল properties file ব্যবহার করে প্রপার্টি সেট করা, এবং সেই ফাইল থেকে প্রপার্টি রিড করে override করা।
প্রথমে একটি প্রপার্টি ফাইল তৈরি করুন:
myproperties.properties:
output.dir=dist
এখন, build.xml ফাইলে এটি ইমপোর্ট করুন এবং প্রপার্টি ব্যবহার করুন:
build.xml:
<project name="MyProject" default="build">
<property file="myproperties.properties"/>
<target name="build">
<echo message="Output Directory: ${output.dir}"/>
</target>
</project>
এখানে, output.dir এর মান myproperties.properties ফাইল থেকে আসবে এবং dist হবে।
৩. Default Property এবং Override
যদি আপনি build.xml ফাইলে একটি ডিফল্ট প্রপার্টি সেট করেন এবং পরে সেটি কমান্ড লাইন বা প্রপার্টি ফাইলের মাধ্যমে override করেন, তাহলে শেষে যে মান সেট করা হয় সেটিই ব্যবহার হবে।
build.xml উদাহরণ:
<project name="MyProject" default="build">
<property name="output.dir" value="build"/>
<target name="build">
<echo message="Output Directory: ${output.dir}"/>
</target>
</project>
এখন যদি আপনি কমান্ড লাইনে প্রপার্টিটি override করেন:
ant -Doutput.dir=dist
তাহলে আউটপুট হবে:
Output Directory: dist
এটি দেখায় যে build.xml ফাইলে output.dir এর ডিফল্ট মান ছিল build, কিন্তু কমান্ড লাইনে -Doutput.dir=dist ব্যবহার করার ফলে এটি পরিবর্তিত হয়ে dist হয়েছে।
৩. Properties Override এর ক্ষেত্রে কিছু গুরুত্বপূর্ণ দিক
- Priority of Override:
- যদি আপনি একাধিক উপায়ে (কমান্ড লাইন, প্রপার্টি ফাইল, বা
build.xml) প্রপার্টি সেট করেন, তবে শেষে সেট করা মানটি সর্বাধিক অগ্রাধিকার পাবে।
- যদি আপনি একাধিক উপায়ে (কমান্ড লাইন, প্রপার্টি ফাইল, বা
- Property Values in Nested Targets:
- যদি কোন টার্গেটের মধ্যে প্রপার্টি ব্যবহৃত হয়, এবং ওই টার্গেটের বাইরে সেই প্রপার্টির মান পরিবর্তন করা হয়, তবে নতুন মানটি সব পরবর্তী টার্গেটে প্রভাব ফেলবে।
- Immutable Properties:
- কিছু প্রপার্টি immutable থাকে, যেমন ANT এর অভ্যন্তরীণ কিছু প্রপার্টি। এগুলি আপনি override করতে পারবেন না, যেমন
ant.file,ant.versionইত্যাদি। তবে, সাধারণত প্রজেক্টের প্রপার্টিগুলি আপনি freely override করতে পারবেন।
- কিছু প্রপার্টি immutable থাকে, যেমন ANT এর অভ্যন্তরীণ কিছু প্রপার্টি। এগুলি আপনি override করতে পারবেন না, যেমন
৪. উদাহরণ
নিচে একটি উদাহরণ দিয়ে দেখানো হলো কিভাবে প্রপার্টি override করা যায়:
build.xml:
<project name="OverrideExample" default="build">
<property name="output.dir" value="build"/>
<target name="init">
<echo message="Initialization: ${output.dir}"/>
</target>
<target name="build" depends="init">
<echo message="Building to directory: ${output.dir}"/>
</target>
</project>
এখন যদি আপনি কমান্ড লাইনে এটি override করেন:
ant -Doutput.dir=dist build
তাহলে আউটপুট হবে:
Initialization: dist
Building to directory: dist
এটি প্রমাণ করে যে output.dir প্রপার্টির মান dist হয়েছে, যেটি কমান্ড লাইনের মাধ্যমে override করা হয়েছে।
সারসংক্ষেপ
- ANT Properties Override আপনাকে প্রপার্টির মান পরিবর্তন করতে সাহায্য করে, যাতে প্রজেক্টের বিল্ড প্রক্রিয়া সহজে কাস্টমাইজ করা যায়।
- Override করার জন্য তিনটি প্রধান পদ্ধতি:
- কমান্ড লাইন:
-Dproperty=value - প্রপার্টি ফাইল:
.propertiesফাইল ব্যবহার - ডিফল্ট প্রপার্টি:
build.xmlফাইলে প্রপার্টি সেট করা।
- কমান্ড লাইন:
- Override Priority: প্রপার্টির মানের পরিবর্তন করার সময়, শেষ মানটি সর্বোচ্চ অগ্রাধিকার পায়।
- Immutable Properties: কিছু প্রপার্টি override করা যায় না।
Read more