অ্যাপাচি আইভি (Apache Ivy) ডিপেনডেন্সি ম্যানেজমেন্ট টুল যা Java প্রোজেক্টে ব্যবহৃত লাইব্রেরি এবং ডিপেনডেন্সি রেজলভেশনকে সহজ করে তোলে। Parent-Child Module কনফিগারেশন আইভি ব্যবহার করার একটি গুরুত্বপূর্ণ কৌশল, যেখানে একটি প্রোজেক্টের প্যারেন্ট মডিউল এবং তার চাইল্ড মডিউলের মধ্যে ডিপেনডেন্সি শেয়ার করা হয়।
Parent-Child মডিউল কনফিগারেশন একটি সাধারণ অ্যাপ্লিকেশন আর্কিটেকচার, যেখানে একটি প্রধান (প্যারেন্ট) মডিউল থাকবে এবং তার অধীনে একাধিক সাব-প্রজেক্ট বা চাইল্ড মডিউল থাকবে। এই কনফিগারেশনটি ব্যবহার করার মাধ্যমে আপনি আপনার প্রোজেক্টের বিভিন্ন মডিউলের ডিপেনডেন্সি সমন্বয় করতে পারেন এবং একাধিক মডিউলের মধ্যে ডিপেনডেন্সি ম্যানেজমেন্টকে সহজতর করতে পারেন।
Parent Module হল একটি মডিউল যা বিভিন্ন চাইল্ড মডিউলের ডিপেনডেন্সি এবং কনফিগারেশন পরিচালনা করে। এটি ডিপেনডেন্সি হ্যান্ডলিং এবং মডিউল কনফিগারেশনের জন্য কেন্দ্রীয় ভূমিকা পালন করে। Child Modules হল প্যারেন্ট মডিউল থেকে নির্দিষ্ট ডিপেনডেন্সি গ্রহণ করে এবং প্রোজেক্টের কার্য সম্পাদন করে।
আইভি এই কনফিগারেশনে প্যারেন্ট মডিউলের ivy.xml
ফাইল থেকে চাইল্ড মডিউলগুলোর ডিপেনডেন্সি এবং কনফিগারেশন শেয়ার করতে সাহায্য করে।
এখানে একটি উদাহরণ দেখানো হবে যেখানে প্যারেন্ট মডিউল এবং চাইল্ড মডিউল একসাথে কাজ করবে।
প্যারেন্ট মডিউল সাধারণত একটি ivy.xml
ফাইল থাকবে, যেখানে সমস্ত সাধারণ ডিপেনডেন্সি এবং কনফিগারেশন নির্ধারিত থাকবে। এই প্যারেন্ট মডিউলটি চাইল্ড মডিউলগুলোর জন্য ডিপেনডেন্সি শেয়ার করবে।
<ivy-module version="2.0">
<info organisation="com.example" module="parent-module" revision="1.0.0"/>
<dependencies>
<dependency org="org.apache.commons" name="commons-lang3" rev="3.10"/>
</dependencies>
<!-- Common configuration shared by child modules -->
<configurations>
<conf name="compile" description="Compile dependencies"/>
<conf name="runtime" description="Runtime dependencies"/>
</configurations>
</ivy-module>
এখানে:
commons-lang3
লাইব্রেরির ডিপেনডেন্সি রয়েছে যা চাইল্ড মডিউলগুলোর জন্য শেয়ার করা হবে।compile
এবং runtime
কনফিগারেশন ডিফাইন করা হয়েছে, যা চাইল্ড মডিউলগুলিতে শেয়ার করা যাবে।চাইল্ড মডিউলগুলিতে, আপনি প্যারেন্ট মডিউলটির ডিপেনডেন্সি এবং কনফিগারেশন ব্যবহার করতে পারেন। চাইল্ড মডিউলগুলিতে সাধারণত ivy.xml
ফাইলের মধ্যে প্যারেন্ট মডিউলের রেফারেন্স রাখা হয়।
<ivy-module version="2.0">
<info organisation="com.example" module="child-module" revision="1.0.0"/>
<!-- Inherit dependencies from parent module -->
<dependencies>
<dependency org="com.example" name="parent-module" rev="1.0.0"/>
</dependencies>
<configurations>
<conf name="compile" description="Compile dependencies"/>
</configurations>
</ivy-module>
এখানে:
commons-lang3
লাইব্রেরি ডিপেনডেন্সি ব্যবহার করবে।যখন প্যারেন্ট মডিউলে ডিপেনডেন্সি নির্ধারণ করা হয়, তখন চাইল্ড মডিউলগুলি সেই ডিপেনডেন্সি শেয়ার করে এবং তাদের কাজ চালিয়ে নেয়। এছাড়া, প্যারেন্ট মডিউল থেকে কনফিগারেশনগুলোও শেয়ার করা যায়, যেমন compile
, runtime
, ইত্যাদি।
এটি আপনার প্রোজেক্টে একাধিক সাব-প্রজেক্ট বা মডিউল পরিচালনাকে আরও সহজ এবং সুশৃঙ্খল করে তোলে।
আইভি আপনাকে নির্দিষ্ট করতে দেয় কোন কনফিগারেশনে ডিপেনডেন্সি ব্যবহৃত হবে, যেমন compile
, runtime
, ইত্যাদি। এই কনফিগারেশনগুলো প্যারেন্ট মডিউল থেকে চাইল্ড মডিউলে শেয়ার করা যায়।
<ivy-module version="2.0">
<info organisation="com.example" module="child-module" revision="1.0.0"/>
<!-- Inherit compile and runtime configurations from the parent module -->
<dependencies>
<dependency org="com.example" name="parent-module" rev="1.0.0" conf="compile, runtime"/>
</dependencies>
</ivy-module>
এখানে:
compile
এবং runtime
কনফিগারেশন শেয়ার করছে।একটি পূর্ণাঙ্গ উদাহরণ যেখানে একটি প্যারেন্ট মডিউল এবং দুটি চাইল্ড মডিউল থাকবে, এবং প্যারেন্ট মডিউল চাইল্ড মডিউলগুলির জন্য ডিপেনডেন্সি শেয়ার করবে:
parent-module/ivy.xml
)<ivy-module version="2.0">
<info organisation="com.example" module="parent-module" revision="1.0.0"/>
<dependencies>
<dependency org="org.apache.commons" name="commons-lang3" rev="3.10"/>
</dependencies>
</ivy-module>
child-module1/ivy.xml
)<ivy-module version="2.0">
<info organisation="com.example" module="child-module1" revision="1.0.0"/>
<dependencies>
<dependency org="com.example" name="parent-module" rev="1.0.0"/>
</dependencies>
</ivy-module>
child-module2/ivy.xml
)<ivy-module version="2.0">
<info organisation="com.example" module="child-module2" revision="1.0.0"/>
<dependencies>
<dependency org="com.example" name="parent-module" rev="1.0.0"/>
</dependencies>
</ivy-module>
এখানে:
parent-module
একটি প্যারেন্ট মডিউল যা একটি ডিপেনডেন্সি (commons-lang3
) সংজ্ঞায়িত করেছে।child-module1
এবং child-module2
) প্যারেন্ট মডিউলটির ডিপেনডেন্সি শেয়ার করেছে।অ্যাপাচি আইভি (Apache Ivy) প্যারেন্ট এবং চাইল্ড মডিউল কনফিগারেশন ব্যবহারের মাধ্যমে বিভিন্ন মডিউলের মধ্যে ডিপেনডেন্সি শেয়ার করা সহজ করে তোলে। এতে আপনি একটি প্যারেন্ট মডিউল থেকে চাইল্ড মডিউলে ডিপেনডেন্সি এবং কনফিগারেশন শেয়ার করতে পারেন, যা প্রকল্পের মডিউলগুলোকে আরও সুশৃঙ্খলভাবে ম্যানেজ করার সুবিধা প্রদান করে।
common.read_more