Apache ANT একটি অত্যন্ত কাস্টমাইজেবল বিল্ড টুল, যা বিভিন্ন প্রকারের built-in টাস্ক (যেমন javac, copy, jar) প্রদান করে, তবে কখনো কখনো প্রজেক্টের জন্য বিশেষ ধরনের কাজ সম্পাদন করতে কাস্টম টাস্কের প্রয়োজন হয়। ANT-এ custom task তৈরি করে আপনি আপনার প্রয়োজন অনুযায়ী কাজ করতে পারেন। এই কাস্টম টাস্ক Java ক্লাস হিসেবে তৈরি করা হয় এবং ANT ফাইলের মধ্যে অন্তর্ভুক্ত করা হয়।
এই গাইডে, আমরা দেখব কীভাবে custom task তৈরি এবং কম্পাইল করতে হয় এবং কীভাবে তা ANT ফাইলে অন্তর্ভুক্ত করা যায়।
1. Custom Task তৈরি করা
Custom Task তৈরি করতে, প্রথমে আপনাকে একটি Java ক্লাস তৈরি করতে হবে, যা ANT টাস্কের কার্যক্রম সম্পাদন করবে। একটি ANT টাস্কে org.apache.tools.ant.Task ক্লাস বা তার উপশ্রেণী (subclass) হতে হবে।
Custom Task Java ক্লাস:
MyCustomTask.java:
package com.example.ant;
import org.apache.tools.ant.Task;
import org.apache.tools.ant.BuildException;
public class MyCustomTask extends Task {
// Override the execute method to define the task behavior
@Override
public void execute() throws BuildException {
System.out.println("Hello, this is a custom ANT task!");
}
}
Taskক্লাসের subclass হিসেবেMyCustomTaskতৈরি করা হয়েছে।execute()মেথডটি override করা হয়েছে, যা task চালানোর সময় ANT দ্বারা কল হবে।
2. Custom Task কম্পাইল করা
আপনি যখন Java ক্লাস তৈরি করবেন, তখন এটি কম্পাইল করতে হবে এবং ANT টাস্ক হিসেবে ব্যবহারযোগ্য করতে হবে।
কম্পাইল করার জন্য:
প্রথমে Java ক্লাসটি কম্পাইল করুন:
javac -d . MyCustomTask.javaএখানে
-d .অপশন ব্যবহার করে কম্পাইল করা Java ক্লাসের আউটপুট বর্তমান ডিরেক্টরিতে রাখা হচ্ছে।এরপর, এই কম্পাইল করা ক্লাসটি একটি JAR ফাইলে প্যাকেজ করুন (যেহেতু এটি ANT টাস্ক, এটি JAR ফাইল হিসেবে প্যাকেজ করা যেতে পারে)।
jar cvf customtask.jar -C . comএই কমান্ডটি
comপ্যাকেজ সহMyCustomTask.classফাইলটিcustomtask.jarফাইলে প্যাকেজ করবে।
3. Custom Task ANT ফাইলে অন্তর্ভুক্ত করা
ANT ফাইলে Custom Task অন্তর্ভুক্ত করার জন্য আপনাকে taskdef ট্যাগ ব্যবহার করতে হবে। taskdef ট্যাগটি ANT-কে আপনার কাস্টম টাস্কের ক্লাস এবং JAR ফাইল সম্পর্কে তথ্য দেয়।
ANT ফাইলে Custom Task অন্তর্ভুক্ত করা:
build.xml:
<?xml version="1.0" encoding="UTF-8"?>
<project name="CustomTaskExample" default="execute" basedir=".">
<!-- Define custom task -->
<taskdef name="mytask"
classname="com.example.ant.MyCustomTask"
classpath="path/to/customtask.jar"/>
<!-- Target to execute custom task -->
<target name="execute">
<mytask/>
</target>
</project>
taskdef:- name: এখানে "mytask" হল কাস্টম টাস্কের নাম, যা ANT ফাইলে টাস্কের জন্য ব্যবহার করা হবে।
- classname: এখানে
com.example.ant.MyCustomTaskহল কাস্টম টাস্কের Java ক্লাসের পূর্ণ কোয়ালিফাইড নাম। - classpath: এখানে JAR ফাইলের পথ উল্লেখ করতে হবে যেখানে আপনার কাস্টম টাস্কের ক্লাস প্যাকেজ করা আছে।
<mytask/>: এটি কাস্টম টাস্কটি চালানোর জন্য ব্যবহৃত হয়।<mytask/>এই ট্যাগটিtaskdef-এ নির্ধারিত কাস্টম টাস্কের সমতুল্য।
4. Custom Task চালানো
কাস্টম টাস্ক অন্তর্ভুক্ত করার পর, ant কমান্ড ব্যবহার করে বিল্ড চালানো যেতে পারে।
ant execute
এটি execute টার্গেট চালাবে, যা আপনার কাস্টম টাস্ক চালাবে এবং Hello, this is a custom ANT task! মেসেজটি কমান্ড লাইনে প্রিন্ট করবে।
5. Custom Task এর উন্নত ব্যবহার
কাস্টম টাস্ক আরও উন্নত করতে আপনি বিভিন্ন atributes এবং nested elements যুক্ত করতে পারেন। উদাহরণস্বরূপ, আপনি কাস্টম টাস্কে ইনপুট প্যারামিটার পাস করতে পারেন।
Parameterized Custom Task:
MyCustomTask.java (Parameterized):
package com.example.ant;
import org.apache.tools.ant.Task;
import org.apache.tools.ant.BuildException;
public class MyCustomTask extends Task {
private String message;
// Setter for the message parameter
public void setMessage(String message) {
this.message = message;
}
@Override
public void execute() throws BuildException {
if (message == null) {
throw new BuildException("Message attribute is required!");
}
System.out.println(message);
}
}
এখানে setMessage() মেথডটি যোগ করা হয়েছে যা ANT ফাইলে পাস করা ইনপুট মেসেজ গ্রহণ করবে।
build.xml (Parameterized):
<?xml version="1.0" encoding="UTF-8"?>
<project name="CustomTaskExample" default="execute" basedir=".">
<!-- Define custom task with parameter -->
<taskdef name="mytask"
classname="com.example.ant.MyCustomTask"
classpath="path/to/customtask.jar"/>
<target name="execute">
<!-- Pass a message to custom task -->
<mytask message="Hello, Custom Task with Parameter!"/>
</target>
</project>
এখন আপনি message অ্যাট্রিবিউট পাস করতে পারেন এবং কাস্টম টাস্ক সেই মানটি ব্যবহার করবে।
6. সারাংশ
- Custom Task তৈরি করতে Java ক্লাস তৈরি করুন যা
org.apache.tools.ant.Taskক্লাসের subclass হবে এবংexecute()মেথডটি override করবে। - Custom Task কম্পাইল করতে Java ক্লাসটি কম্পাইল করে একটি JAR ফাইলে প্যাকেজ করুন।
- ANT ফাইলে Custom Task অন্তর্ভুক্ত করতে
taskdefট্যাগ ব্যবহার করুন এবং প্রয়োজনীয় ক্লাসপাথ সেট করুন। - Custom Task চালানোর সময় প্রপার্টি ও ইনপুট প্যারামিটার পাস করতে পারেন।
এইভাবে, আপনি ANT-এর বিল্ড প্রক্রিয়ায় কাস্টম টাস্ক তৈরি এবং অন্তর্ভুক্ত করে অতিরিক্ত কার্যকলাপ সম্পাদন করতে পারবেন, যা প্রজেক্টের নির্দিষ্ট প্রয়োজন অনুসারে কাস্টমাইজ করা যাবে।
Read more