Apache Ant একটি শক্তিশালী বিল্ড টুল যা Java প্রজেক্টের জন্য ব্যবহৃত হয়। এটি XML-based কনফিগারেশন ফাইল (build.xml
) ব্যবহার করে বিভিন্ন বিল্ড কাজ সম্পাদন করে। Task এবং Target হল অ্যান্টে দুটি গুরুত্বপূর্ণ ধারণা, যা একে অপরের সাথে সম্পর্কিত।
এই সেকশনে আমরা Task এবং Target এর সম্পর্ক, কীভাবে এগুলি একে অপরের সাথে কাজ করে এবং অ্যাপাচি অ্যান্ট বিল্ড সিস্টেমে কীভাবে কার্যকরী ভূমিকা পালন করে তা ব্যাখ্যা করব।
Task হল একটি নির্দিষ্ট কাজ বা কার্যক্রম যা অ্যান্ট দ্বারা সম্পাদিত হয়। প্রতিটি টাস্ক একটি নির্দিষ্ট ফাংশন বা অ্যাকশন বাস্তবায়ন করে, যেমন ফাইল কপি করা, কোড কম্পাইল করা, আর্কাইভ তৈরি করা ইত্যাদি। একটি টাস্ক সাধারণত কমান্ড হিসেবে ব্যবহার করা হয় যা অ্যান্ট স্ক্রিপ্টে বাস্তবায়িত হয়।
অ্যান্ট টাস্কগুলির কিছু সাধারণ উদাহরণ:
copy
টাস্ক<copy file="source.txt" tofile="destination.txt"/>
এই টাস্কটি source.txt
ফাইলটি কপি করে destination.txt
তে পাঠাবে।
Target হলো একটি নির্দিষ্ট কাজের সিস্টেম যা একাধিক Task অন্তর্ভুক্ত করে এবং একটি নির্দিষ্ট কাজ শেষ করার জন্য তাদের একত্রে কার্যকরীভাবে বাস্তবায়িত করে। প্রতিটি target একটি নির্দিষ্ট কাজ সম্পাদন করার জন্য নির্ধারিত থাকে, এবং একটি বা একাধিক Task এর মাধ্যমে সেটি সম্পন্ন হয়।
অ্যান্টে Target গুলি সাধারণত dependency-based হয়, অর্থাৎ একটি target অন্য একটি target এর উপর নির্ভরশীল হতে পারে। যখন একটি target সম্পন্ন হয়, তখন এটি অন্যান্য target বা task গুলিকে চালু করতে পারে।
compile
টার্গেট<target name="compile">
<javac srcdir="src" destdir="build/classes"/>
</target>
এই target-এর মধ্যে javac
টাস্ক ব্যবহার করে src
ডিরেক্টরি থেকে জাভা ফাইল কম্পাইল করা হচ্ছে এবং আউটপুট ফাইল build/classes
ডিরেক্টরিতে রাখা হচ্ছে।
Task এবং Target একে অপরের সাথে সম্পর্কিত এবং একসাথে কাজ করে। একটি target নির্দিষ্ট কাজ বা টাস্কগুলির একটি গোষ্ঠী। একাধিক টাস্ক একটি target এর মধ্যে থাকতে পারে, এবং যখন target চালানো হয়, তখন সেই target এর মধ্যে থাকা সকল টাস্ক কার্যকরী হয়।
<project name="MyProject" default="compile">
<!-- Compile target: runs the javac task -->
<target name="compile">
<javac srcdir="src" destdir="build/classes"/>
</target>
<!-- Clean target: runs the delete task -->
<target name="clean">
<delete file="build/classes"/>
</target>
</project>
এখানে, clean
এবং compile
দুটি target রয়েছে, এবং প্রতিটি target এর মধ্যে নির্দিষ্ট task আছে:
javac
টাস্ক রয়েছে, যা কোড কম্পাইল করবে।delete
টাস্ক রয়েছে, যা build/classes
ফোল্ডারটি মুছে ফেলবে।এখন, যদি আপনি ant compile
কমান্ড চালান, তাহলে compile target সম্পন্ন হবে এবং javac
টাস্ক এক্সিকিউট হবে। যদি ant clean
চালান, তাহলে clean target এর মধ্যে থাকা delete
টাস্ক কার্যকর হবে।
অ্যান্টে টার্গেটগুলির মধ্যে নির্ভরতা থাকতে পারে, অর্থাৎ একটি টার্গেট সম্পূর্ণ করতে অন্য টার্গেটের উপর নির্ভর করতে পারে। একাধিক টার্গেট একে অপরের উপর নির্ভরশীল হয়ে কাজ করে।
<project name="MyProject" default="build">
<!-- Clean target -->
<target name="clean">
<delete dir="build"/>
</target>
<!-- Compile target, depends on the clean target -->
<target name="compile" depends="clean">
<javac srcdir="src" destdir="build/classes"/>
</target>
<!-- Build target, depends on the compile target -->
<target name="build" depends="compile">
<jar destfile="build/myproject.jar" basedir="build/classes"/>
</target>
</project>
এখানে:
compile
target এর উপর নির্ভরশীল, এবং compile target clean
target এর উপর নির্ভরশীল।অ্যান্ট প্রজেক্টের মধ্যে default টার্গেট সেট করতে পারে। এটি সেই টার্গেট যেটি অ্যান্ট কমান্ড চালানোর সময় ডিফল্টভাবে চালু হয় যদি কোনো টার্গেট নির্দিষ্ট না করা হয়।
<project name="MyProject" default="compile">
<target name="compile">
<javac srcdir="src" destdir="build/classes"/>
</target>
</project>
এখানে, default="compile"
মানে হলো, যদি আপনি ant
কমান্ড চালান, তবে এটি compile টার্গেটটি ডিফল্টভাবে চালু করবে। আপনি কোনো টার্গেট উল্লেখ না করলে, অ্যাকশনটি compile টার্গেটেই চলে যাবে।
অ্যাপাচি অ্যান্টে Task এবং Target এর সম্পর্ক একটি গুরুত্বপূর্ণ ধারণা। Target হলো একটি বড় কাজ বা অ্যাকশন যা একাধিক Task দ্বারা বাস্তবায়িত হয়। Task গুলি হল ছোট ছোট কাজ যা একত্রে Target সম্পন্ন করার জন্য ব্যবহৃত হয়। অ্যাপাচি অ্যান্টের Target এবং Task গুলির মধ্যে নির্ভরতা থাকতে পারে, যেখানে একটি টার্গেট অন্য টার্গেটের উপর নির্ভরশীল হতে পারে এবং সম্পন্ন হতে পারে।
এই সম্পর্কটি অ্যাপাচি অ্যান্টের বিল্ড প্রক্রিয়াকে অত্যন্ত নমনীয় এবং কাঠামোগত করে তোলে, যার মাধ্যমে বিল্ড, ডিপ্লয়মেন্ট এবং অন্যান্য কার্যক্রম সহজে পরিচালিত হয়।
common.read_more