Maven একটি জনপ্রিয় বিল্ড টুল যা Java প্রোজেক্টের ডিপেনডেন্সি ম্যানেজমেন্ট, বিল্ড, ডিপ্লয়মেন্ট এবং টেস্টিং প্রক্রিয়াকে স্বয়ংক্রিয় করে তোলে। এটি প্রোজেক্ট স্ট্রাকচার এবং ফাইল লেআউট অনুসরণ করতে সহায়তা করে, যা জাভা প্রোজেক্টের ডেভেলপমেন্টকে সহজ ও সুসংগঠিত রাখে।
Maven প্রোজেক্টের মধ্যে সাধারণত দুটি প্রধান ফোল্ডার থাকে:
src/main/javasrc/test/java
এই দুটি ফোল্ডার প্রোজেক্টের মূল কোড এবং টেস্ট কোডের জন্য আলাদা জায়গা সরবরাহ করে। তাদের ভূমিকা ও ব্যবহার সম্পর্কে বিস্তারিত আলোচনা করা হল।
১. src/main/java এর ভূমিকা
src/main/java ফোল্ডারটি হল আপনার মূল অ্যাপ্লিকেশন কোড রাখার স্থান। এটি production code হিসেবে পরিচিত এবং আপনার প্রোজেক্টের কার্যকারিতা (functionalities) এখানেই বাস্তবায়িত হয়।
src/main/java এর ভূমিকা:
- Main Application Code: এই ফোল্ডারে প্রোজেক্টের মূল ফাংশনালিটি এবং লজিকাল কোড রাখা হয়। যেমন, ক্লাস, মেথড, ইন্টারফেস ইত্যাদি।
- Libraries and Services: অন্যান্য ডিপেনডেন্সি এবং ক্লাস, সার্ভিস ইত্যাদি যা প্রোডাকশন পরিবেশে রান করার জন্য প্রয়োজন, সেগুলি এখানে রাখা হয়।
- Packaging: যখন প্রোজেক্টটি প্যাকেজ করা হয়, তখন এই কোডটি
.jarবা.warফাইলে প্যাকেজ হয়ে যাবে এবং প্রোডাকশন পরিবেশে ডিপ্লয় হবে।
উদাহরণ: src/main/java এ একটি সাধারণ Java ক্লাস
package com.example;
public class GreetingService {
public String getGreeting(String name) {
return "Hello, " + name + "!";
}
}
এটি src/main/java/com/example ডিরেক্টরির মধ্যে থাকবে এবং আপনার অ্যাপ্লিকেশন লজিক বা কার্যক্রম বাস্তবায়ন করবে।
২. src/test/java এর ভূমিকা
src/test/java ফোল্ডারটি হল আপনার টেস্ট কোড রাখার স্থান। এই ফোল্ডারে আপনার সমস্ত unit tests, integration tests, এবং অন্যান্য টেস্টিং কোড রাখবেন।
src/test/java এর ভূমিকা:
- Test Cases: আপনার অ্যাপ্লিকেশনের জন্য ইউনিট টেস্ট এবং ইন্টিগ্রেশন টেস্ট কোড এখানে রাখা হয়।
- Testing Frameworks: এই ফোল্ডারে JUnit, TestNG, বা অন্যান্য টেস্ট ফ্রেমওয়ার্ক ব্যবহার করে আপনার কোডের বৈধতা পরীক্ষা করা হয়।
- Validation and Verification: আপনার অ্যাপ্লিকেশনের কার্যকারিতা পরীক্ষা করতে এখানে টেস্ট করা হয়, যাতে নিশ্চিত হওয়া যায় যে আপনার কোড প্রত্যাশিতভাবে কাজ করছে।
উদাহরণ: src/test/java এ একটি টেস্ট ক্লাস
package com.example;
import org.junit.jupiter.api.Test;
import static org.junit.jupiter.api.Assertions.*;
public class GreetingServiceTest {
@Test
public void testGetGreeting() {
GreetingService greetingService = new GreetingService();
String result = greetingService.getGreeting("John");
assertEquals("Hello, John!", result);
}
}
এটি src/test/java/com/example ডিরেক্টরির মধ্যে থাকবে এবং JUnit টেস্ট ফ্রেমওয়ার্কের মাধ্যমে GreetingService ক্লাসের getGreeting() মেথডের কার্যকারিতা পরীক্ষা করবে।
৩. src/main/java এবং src/test/java এর মধ্যে পার্থক্য
src/main/java | src/test/java |
|---|---|
| এখানে প্রোডাকশন কোড রাখা হয়। | এখানে টেস্ট কোড রাখা হয়। |
| এটি অ্যাপ্লিকেশন লজিক এবং কার্যকারিতা বাস্তবায়িত করে। | এটি unit tests এবং integration tests এর জন্য ব্যবহৃত হয়। |
| এই কোডটি ডিপ্লয়মেন্ট এবং প্যাকেজিং সময় অন্তর্ভুক্ত হয়। | এই কোডটি build বা deployment সময় অন্তর্ভুক্ত হয় না, শুধুমাত্র টেস্টিংয়ে ব্যবহৃত হয়। |
৪. Maven Build Lifecycle এর মধ্যে src/main/java এবং src/test/java এর ভূমিকা
Maven এর বিল্ড লাইফসাইকলে src/main/java এবং src/test/java ফোল্ডারগুলোর ভূমিকা ভিন্ন:
src/main/java: এই ফোল্ডারে থাকা কোডcompileএবংpackageফেজের সময় কম্পাইল ও প্যাকেজ করা হয় এবং ফাইনাল.jarবা.warফাইলে অন্তর্ভুক্ত হয়।src/test/java: এই ফোল্ডারের কোডtestফেজের সময় চালানো হয়, যেখানে ইউনিট টেস্ট বা ইন্টিগ্রেশন টেস্টগুলি চালানো হয়।
উদাহরণ: Maven Command for Building Project
mvn clean install
এটি src/main/java এবং src/test/java উভয় ফোল্ডারের কোড কম্পাইল এবং টেস্ট করবে।
উপসংহার
src/main/java এবং src/test/java দুটি গুরুত্বপূর্ণ ডিরেক্টরি, যেখানে যথাক্রমে প্রোডাকশন কোড এবং টেস্ট কোড রাখা হয়। Maven-এর সাহায্যে এই ফোল্ডারগুলোকে আলাদা করা হয়, যাতে কোডের লজিক এবং টেস্টিং সুসংগঠিত থাকে। প্রোডাকশন কোড src/main/java-এ রাখা হয়, যা বিল্ড এবং ডিপ্লয়মেন্টের জন্য প্রয়োজনীয়, এবং টেস্ট কোড src/test/java-এ রাখা হয়, যা শুধুমাত্র টেস্টিংয়ের জন্য ব্যবহৃত হয়।
এভাবে, মেভেন প্রোজেক্ট স্ট্রাকচার সঠিকভাবে ব্যবহৃত হলে, ডেভেলপাররা দ্রুত এবং নির্ভুলভাবে অ্যাপ্লিকেশন ডেভেলপ এবং টেস্ট করতে পারেন।
Read more