Apache ANT একটি অত্যন্ত নমনীয় এবং কাস্টমাইজযোগ্য বিল্ড টুল, যা আপনাকে আপনার নিজস্ব টাস্ক তৈরি করার সুযোগ প্রদান করে। কাস্টম টাস্কগুলি বিশেষভাবে তৈরি করা হয় যাতে নির্দিষ্ট কাজ সম্পন্ন করতে পারে যা পূর্বনির্ধারিত ANT টাস্কের বাইরে। কাস্টম টাস্ক ব্যবহার করা হলে, আপনি টাস্কের মধ্যে নির্দিষ্ট প্রক্রিয়া, নির্দিষ্ট ফাইল অপারেশন বা নির্দিষ্ট কার্যক্রম যোগ করতে পারবেন, যা আপনার প্রোজেক্টের প্রয়োজন অনুসারে উপযোগী।
ANT কাস্টম টাস্ক তৈরি করার জন্য মূলত Java ব্যবহার করতে হয়, কারণ ANT টাস্ক Java ক্লাস হিসেবে তৈরি হয় এবং বিল্ড ফাইলে তা ব্যবহার করা হয়। এখানে কাস্টম টাস্ক তৈরি ও ব্যবহার করার মূল পদক্ষেপগুলো আলোচনা করা হয়েছে।
Apache ANT এ কাস্টম টাস্ক তৈরি করতে হলে একটি Java ক্লাস তৈরি করতে হবে যা org.apache.tools.ant.Task
ক্লাসকে এক্সটেন্ড (extend) করবে। এটি সেই ক্লাসের মেথডগুলি ব্যবহার করে টাস্কটি চালাবে।
package com.example.ant;
import org.apache.tools.ant.Task;
import org.apache.tools.ant.BuildException;
public class HelloWorldTask extends Task {
// এই মেথডটি টাস্ক চলাকালীন ANT দ্বারা কল হবে
public void execute() throws BuildException {
System.out.println("Hello, World from Custom ANT Task!");
}
}
এখানে:
HelloWorldTask
ক্লাসটি Task
ক্লাস এক্সটেন্ড করেছে, যা ANT টাস্কের জন্য একটি বেস ক্লাস।execute()
মেথডটি একটি অবধারিত মেথড, যা ANT টাস্ক রান হওয়ার সময় কল করা হয়।BuildException
প্রয়োগ করার মাধ্যমে, ত্রুটি সনাক্ত করা যাবে।কাস্টম টাস্ক ব্যবহার করতে হলে, আপনাকে প্রথমে ক্লাসটি ANT classpath এ অন্তর্ভুক্ত করতে হবে এবং তারপরে build.xml ফাইলে ব্যবহার করতে হবে। এটি সম্ভব করতে আপনার Java ক্লাস ফাইলটি ANT-এ প্রবাহিত করতে হবে।
<path id="custom.classpath">
<fileset dir="lib">
<include name="custom-task.jar"/>
</fileset>
</path>
এখানে:
lib/custom-task.jar
ফাইলটি ANT ক্লাসপাথে যুক্ত করা হয়েছে।<project name="CustomTaskExample" default="run-custom-task" basedir=".">
<taskdef name="hello" classname="com.example.ant.HelloWorldTask">
<classpath refid="custom.classpath"/>
</taskdef>
<target name="run-custom-task">
<hello/>
</target>
</project>
এখানে:
taskdef
ট্যাগটি কাস্টম টাস্ক HelloWorldTask
শ্রেণীকে name="hello"
হিসাবে ডিফাইন করেছে।classname
হল সেই Java ক্লাসের পুরো প্যাকেজ এবং ক্লাস নাম যা কাস্টম টাস্কের কার্যকরী অংশ।<hello/>
হল সেই টাস্ক যা আপনি run-custom-task
টার্গেটের মধ্যে ব্যবহার করেছেন এবং এটি যখন রান হবে, তখন কাস্টম টাস্কটি কার্যকর হবে।কাস্টম টাস্কে অ্যাট্রিবিউট বা প্রপার্টি যোগ করা সম্ভব, যা আপনাকে টাস্কটির ইনপুট কনফিগারেশন করতে সাহায্য করবে। টাস্কের ভিতরে ইনপুট প্যারামিটার বা প্রপার্টি ব্যবহার করতে আপনি setter methods তৈরি করতে পারেন।
package com.example.ant;
import org.apache.tools.ant.Task;
import org.apache.tools.ant.BuildException;
public class HelloWorldTask extends Task {
private String message;
// setter method for message attribute
public void setMessage(String message) {
this.message = message;
}
public void execute() throws BuildException {
if (message == null) {
throw new BuildException("The message attribute is required!");
}
System.out.println(message);
}
}
এখানে:
setMessage
মেথডের মাধ্যমে message
অ্যাট্রিবিউটটিকে অ্যাক্সেস করা হচ্ছে।execute
মেথডে message
প্রপার্টি চেক করা হচ্ছে, এবং তা না থাকলে একটি ত্রুটি (exception) ছোড়া হচ্ছে।<project name="CustomTaskWithAttributes" default="run-custom-task" basedir=".">
<taskdef name="hello" classname="com.example.ant.HelloWorldTask">
<classpath refid="custom.classpath"/>
</taskdef>
<target name="run-custom-task">
<hello message="Hello, World with Custom Attribute!"/>
</target>
</project>
এখানে:
hello
টাস্কে message
অ্যাট্রিবিউট পাস করা হয়েছে।কাস্টম টাস্কে আরও জটিল লজিকও যোগ করা যেতে পারে। যেমন, ফাইল তৈরি করা, ডেটাবেস কল করা, বা অন্য কোনো বাহ্যিক সিস্টেমের সঙ্গে যোগাযোগ করা।
package com.example.ant;
import org.apache.tools.ant.Task;
import org.apache.tools.ant.BuildException;
import java.io.File;
public class FileCheckTask extends Task {
private String fileName;
public void setFile(String fileName) {
this.fileName = fileName;
}
public void execute() throws BuildException {
File file = new File(fileName);
if (!file.exists()) {
throw new BuildException("File not found: " + fileName);
}
System.out.println("File exists: " + fileName);
}
}
এখানে:
setFile
মেথডের মাধ্যমে ফাইলের নাম পাস করা হচ্ছে।execute
মেথডে চেক করা হচ্ছে, ফাইলটি উপস্থিত আছে কিনা। যদি না থাকে, তবে ত্রুটি ছোড়া হচ্ছে।<project name="CustomTaskWithFileCheck" default="check-file" basedir=".">
<taskdef name="filecheck" classname="com.example.ant.FileCheckTask">
<classpath refid="custom.classpath"/>
</taskdef>
<target name="check-file">
<filecheck file="somefile.txt"/>
</target>
</project>
এখানে:
filecheck
টাস্কে file
অ্যাট্রিবিউট পাস করা হচ্ছে।Apache ANT-এ কাস্টম টাস্ক তৈরি ও ব্যবহারের মাধ্যমে আপনি আরও কাস্টমাইজড এবং জটিল বিল্ড প্রক্রিয়া তৈরি করতে পারেন। একটি কাস্টম টাস্ক Java ক্লাস হিসেবে তৈরি হয়, যা org.apache.tools.ant.Task
থেকে এক্সটেন্ড করতে হয় এবং আপনি setter methods এবং অন্যান্য প্রপার্টি ব্যবহার করে টাস্কের মধ্যে ইনপুট ও কার্যকলাপ সংজ্ঞায়িত করতে পারেন। এটি আপনার প্রোজেক্টের জন্য বিশেষ কাজ সম্পন্ন করতে সাহায্য করে, যেমন ফাইল পরিচালনা, ডেটাবেস ইন্টিগ্রেশন বা অন্যান্য বহিরাগত কার্যক্রম।
common.read_more