Maven একটি জনপ্রিয় বিল্ড টুল যা Java প্রোজেক্টের জন্য নির্ভরশীলতা ম্যানেজমেন্ট, বিল্ডিং, ডিপ্লয়মেন্ট এবং প্রোজেক্ট ম্যানেজমেন্টে সহায়তা করে। মাভেনের Plugins এবং Goals একটি গুরুত্বপূর্ণ ভূমিকা পালন করে, যা প্রোজেক্টের বিল্ড এবং ম্যানেজমেন্ট কার্যক্রমকে আরও সাশ্রয়ী এবং কাস্টমাইজযোগ্য করে তোলে। Plugin Goals এবং Execution মাভেনের শক্তিশালী বৈশিষ্ট্যগুলির মধ্যে একটি, যা প্রোজেক্টের বিভিন্ন টাস্ক যেমন কম্পাইল, টেস্ট, প্যাকেজ, ক্লিন ইত্যাদি সম্পন্ন করতে ব্যবহৃত হয়।
এখানে, Plugin Goals এবং Execution সম্পর্কে বিস্তারিত আলোচনা করা হবে, যা মাভেন বিল্ড প্রসেসের গুরুত্বপূর্ণ অংশ।
১. Plugin Goals কি?
Plugin Goals হলো নির্দিষ্ট কাজ বা অ্যাকশন যা একটি Maven Plugin সম্পাদন করে। মাভেনের Plugins একটি প্রোজেক্টের নির্দিষ্ট কাজ যেমন বিল্ডিং, টেস্টিং, প্যাকেজিং, বা ডিপ্লয়মেন্ট সম্পাদন করে এবং প্রতিটি plugin goal একটি নির্দিষ্ট কার্যক্রম পরিচালনা করে।
Plugin Goals-এর কিছু সাধারণ উদাহরণ:
- compile: কোড কম্পাইল করার জন্য ব্যবহার করা হয়।
- test: ইউনিট টেস্ট চালানোর জন্য ব্যবহৃত হয়।
- package: প্রোজেক্টের জার, ওয়েব আর্কাইভ (WAR), অথবা অন্যান্য আউটপুট তৈরি করার জন্য ব্যবহৃত হয়।
- clean: পূর্ববর্তী বিল্ডের আউটপুট ক্লিন করার জন্য ব্যবহৃত হয়।
- install: প্যাকেজ তৈরি করা এবং লোকাল রেপোজিটরিতে ইনস্টল করা।
Plugin Goal-এর উদাহরণ:
<build>
<plugins>
<plugin>
<groupId>org.apache.maven.plugins</groupId>
<artifactId>maven-compiler-plugin</artifactId>
<version>3.8.1</version>
<executions>
<execution>
<phase>compile</phase> <!-- Goal: compile -->
<goals>
<goal>compile</goal>
</goals>
</execution>
</executions>
</plugin>
</plugins>
</build>
এখানে, maven-compiler-plugin এর compile goal ব্যবহার করা হয়েছে যা কোড কম্পাইল করার জন্য ব্যবহার হয়।
২. Execution কি?
Execution হলো একটি মেভেন plugin goal এর কার্যকরী রূপ, যা নির্দিষ্ট সময় (ফেজ) এর মধ্যে কার্যকর হয়। যখন একটি goal নির্দিষ্ট phase এর সাথে যুক্ত থাকে, তখন সেটি মেভেনের বিল্ড লাইফসাইকেলে নির্ধারিত সময়ের মধ্যে কার্যকরী হয়।
Maven-এর Lifecycle তিনটি মূল পর্যায়ে বিভক্ত:
- clean: বিল্ড ক্লিন করার পর্যায়
- default: প্রোজেক্ট বিল্ড করার পর্যায়
- site: সাইট বা ডকুমেন্টেশন জেনারেট করার পর্যায়
প্রতিটি phase-এর মধ্যে একাধিক goal থাকতে পারে, এবং Execution এর মাধ্যমে একটি goal নির্দিষ্ট phase-এ অ্যাসাইন করা হয়।
Execution-এর উদাহরণ:
<build>
<plugins>
<plugin>
<groupId>org.apache.maven.plugins</groupId>
<artifactId>maven-clean-plugin</artifactId>
<version>3.1.0</version>
<executions>
<execution>
<phase>clean</phase> <!-- Phase: clean -->
<goals>
<goal>clean</goal> <!-- Goal: clean -->
</goals>
</execution>
</executions>
</plugin>
</plugins>
</build>
এখানে, maven-clean-plugin এর clean goal clean phase এর অংশ হিসেবে কার্যকরী হবে এবং এটি আগের বিল্ডের আউটপুটগুলো ক্লিন করে।
৩. Plugin Goals এবং Execution এর Lifecycle Flow
Maven-এর Lifecycle হলো নির্দিষ্ট বিল্ড ফেজের একটি সিরিজ যা প্রোজেক্টের পুরো বিল্ড প্রক্রিয়াকে নিয়ন্ত্রণ করে। প্রতিটি phase এ একাধিক goal execute হতে পারে। নিচে Lifecycle এবং তার সাথে সম্পর্কিত কিছু common goal এবং execution এর উদাহরণ দেওয়া হলো:
- clean phase:
- Goal:
clean - Purpose: প্রোজেক্টের পূর্ববর্তী আউটপুট মুছে ফেলা হয়।
- Goal:
- validate phase:
- Goal:
validate - Purpose: প্রোজেক্টের কনফিগারেশন এবং প্রয়োজনীয় ফাইলগুলো যাচাই করা হয়।
- Goal:
- compile phase:
- Goal:
compile - Purpose: সোর্স কোড কম্পাইল করা হয়।
- Goal:
- test phase:
- Goal:
test - Purpose: ইউনিট টেস্ট চালানো হয়।
- Goal:
- package phase:
- Goal:
package - Purpose: প্রোজেক্ট প্যাকেজ (যেমন জার, ওয়ার ফাইল) তৈরি করা হয়।
- Goal:
- install phase:
- Goal:
install - Purpose: প্যাকেজটি লোকাল রেপোজিটরিতে ইনস্টল করা হয়।
- Goal:
- deploy phase:
- Goal:
deploy - Purpose: প্যাকেজটি রিমোট রেপোজিটরিতে ডেপ্লয় করা হয়।
- Goal:
মেভেন লাইফসাইকেল ফেজের উদাহরণ:
<build>
<plugins>
<plugin>
<groupId>org.apache.maven.plugins</groupId>
<artifactId>maven-clean-plugin</artifactId>
<version>3.1.0</version>
<executions>
<execution>
<phase>clean</phase> <!-- Phase: clean -->
<goals>
<goal>clean</goal> <!-- Goal: clean -->
</goals>
</execution>
</executions>
</plugin>
<plugin>
<groupId>org.apache.maven.plugins</groupId>
<artifactId>maven-compiler-plugin</artifactId>
<version>3.8.1</version>
<executions>
<execution>
<phase>compile</phase> <!-- Phase: compile -->
<goals>
<goal>compile</goal> <!-- Goal: compile -->
</goals>
</execution>
</executions>
</plugin>
</plugins>
</build>
এখানে, দুটি plugin ব্যবহার করা হয়েছে:
- maven-clean-plugin: এটি clean phase এ কার্যকর হবে এবং আগের আউটপুট ক্লিন করবে।
- maven-compiler-plugin: এটি compile phase এ কার্যকর হবে এবং সোর্স কোড কম্পাইল করবে।
৪. Plugin Goal এবং Execution Customization
ম্যাভেনে আপনি প্লাগইন এবং goal কাস্টমাইজ করতে পারেন যা নির্দিষ্ট কাজ সম্পাদন করতে সহায়তা করে। উদাহরণস্বরূপ, আপনি একটি goal একটি নির্দিষ্ট phase এ চালাতে পারেন, অথবা একাধিক goals একত্রিত করতে পারেন।
Custom Execution Example:
<build>
<plugins>
<plugin>
<groupId>org.apache.maven.plugins</groupId>
<artifactId>maven-compiler-plugin</artifactId>
<version>3.8.1</version>
<executions>
<execution>
<phase>compile</phase>
<goals>
<goal>compile</goal>
</goals>
</execution>
<execution>
<phase>test</phase>
<goals>
<goal>testCompile</goal>
</goals>
</execution>
</executions>
</plugin>
</plugins>
</build>
এখানে, maven-compiler-plugin দুটি execution ফেজের মধ্যে দুটি goal চালাবে:
compileফেজেcompilegoal।testফেজেtestCompilegoal।
সারাংশ
Maven Plugin Goals এবং Execution দুটি গুরুত্বপূর্ণ বৈশিষ্ট্য যা প্রোজেক্টের বিল্ড এবং ডিপেনডেন্সি ম্যানেজমেন্টকে কার্যকরী করে তোলে। Plugin Goals হলো নির্দিষ্ট কাজ যা একটি প্লাগইন সম্পাদন করে, এবং Execution হলো একটি goal যা নির্দিষ্ট সময়ের মধ্যে কার্যকর হয়। মাভেন লাইফসাইকেল ফেজের মধ্যে প্লাগইন এবং goal গুলি কার্যকরী হয়ে থাকে, যা বিল্ড প্রক্রিয়াকে স্বয়ংক্রিয়ভাবে এবং সুনির্দিষ্টভাবে পরিচালনা করতে সাহায্য করে।
Read more