Apache Ivy একটি শক্তিশালী ডিপেন্ডেন্সি ম্যানেজমেন্ট টুল যা আপনার Java প্রোজেক্টের জন্য বাইরের লাইব্রেরি বা ডিপেন্ডেন্সি ম্যানেজ করতে ব্যবহৃত হয়। Ivy ডিপেন্ডেন্সি ম্যানেজমেন্ট সিস্টেমে Module এবং Artifact দুটি গুরুত্বপূর্ণ ধারণা, যেগুলি আপনাকে লাইব্রেরি, তাদের সংস্করণ এবং উপাদানগুলি (components) সঠিকভাবে ম্যানেজ করতে সাহায্য করে।
Module হল একটি একক ইউনিট বা একক উপাদান, যা আপনার প্রোজেক্টের বাইরের লাইব্রেরি বা ডিপেন্ডেন্সি হতে পারে। প্রতিটি Module-এর একটি নির্দিষ্ট version থাকে, এবং এটি একটি নির্দিষ্ট organisation বা গ্রুপের অন্তর্গত।
একটি Module সাধারণত একটি লাইব্রেরি বা প্রোজেক্টের ভিত্তিতে পরিচিত হয় এবং এটি Ivy রিপোজিটরিতে সংরক্ষিত থাকে। উদাহরণস্বরূপ, Commons Lang একটি module হতে পারে যার বিভিন্ন সংস্করণ (যেমন 3.12.0) উপলব্ধ থাকে।
Module-এর মধ্যে বিভিন্ন Artifacts থাকতে পারে, যেগুলি একাধিক ফাইলের সমষ্টি হতে পারে, যেমন JAR ফাইল, WAR ফাইল, pom.xml ফাইল ইত্যাদি।
<ivy-module version="2.0">
<info organisation="org.apache.commons" module="commons-lang3" />
<dependencies>
<dependency org="org.apache.commons" name="commons-lang3" rev="3.12.0"/>
</dependencies>
</ivy-module>
এখানে:
organisation="org.apache.commons"
: এটি module-এর organisation বা গ্রুপের নাম।module="commons-lang3"
: এটি module-এর নাম।rev="3.12.0"
: এটি module-এর নির্দিষ্ট সংস্করণ (version)।Artifact একটি ফাইল বা একাধিক ফাইলের সমষ্টি, যা একটি নির্দিষ্ট Module এর অংশ হিসেবে প্রকাশিত হয়। সাধারণত artifact হল একটি JAR ফাইল, WAR ফাইল, pom.xml অথবা zip ফাইল, যা একটি module-এর লাইব্রেরি বা প্রোগ্রামের কার্যকরী উপাদান হিসেবে কাজ করে।
একটি Artifact এর মধ্যে version এবং type থাকে, যা আইডেন্টিফাই করে এটি কী ধরনের ফাইল। উদাহরণস্বরূপ, একটি commons-lang3-3.12.0.jar একটি JAR artifact হতে পারে।
<ivy-module version="2.0">
<info organisation="org.apache.commons" module="commons-lang3" />
<artifacts>
<artifact name="commons-lang3" type="jar" ext="jar" />
</artifacts>
</ivy-module>
এখানে:
<artifact>
: এটি artifact কে নির্দেশ করে।name="commons-lang3"
: এটি artifact এর নাম।type="jar"
: এটি artifact এর ধরনের ফাইল, এখানে JAR।ext="jar"
: এটি artifact এর এক্সটেনশন, এখানে JAR ফাইলটি।যদি commons-lang3 মডিউলটি একটি JAR artifact হিসেবে প্রকাশিত হয়, তবে সেই JAR ফাইলটি commons-lang3 মডিউলটির অন্তর্গত একটি artifact হবে।
Ivy আপনার module এবং artifact রেজলভ করে ডিপেন্ডেন্সি ম্যানেজমেন্ট সম্পাদন করে। একটি সাধারণ ivy.xml ফাইলে module এবং artifact এর ব্যবহারের উদাহরণ:
<ivy-module version="2.0">
<info organisation="org.apache.commons" module="commons-lang3" />
<!-- Defining dependencies -->
<dependencies>
<dependency org="org.apache.commons" name="commons-lang3" rev="3.12.0">
<artifact name="commons-lang3" type="jar" ext="jar"/>
</dependency>
</dependencies>
</ivy-module>
এখানে:
<dependency>
ট্যাগে নির্দিষ্ট করা হয়েছে যে, commons-lang3 মডিউলটি 3.12.0 সংস্করণে ডাউনলোড করা হবে।<artifact>
ট্যাগটি নির্দেশ করছে যে, এটি একটি JAR ফাইল (artifact) হবে।Ivy স্বয়ংক্রিয়ভাবে ডিপেন্ডেন্সির মডিউল এবং আর্কাইভ ফাইলগুলিকে রেজলভ করে ডাউনলোড করে। যখন আপনি ivy:resolve
টাস্ক চালান, এটি ivy.xml
ফাইল অনুযায়ী module এবং artifact রেজলভ করে ডাউনলোড করবে।
<project name="IvyModuleArtifactExample" default="resolve-dependencies" basedir=".">
<taskdef name="ivy" classname="org.apache.ivy.ant.IvyTask"/>
<target name="resolve-dependencies">
<ivy:resolve file="ivy.xml"/>
</target>
</project>
এখানে, ivy.xml
ফাইলের মধ্যে ডিপেন্ডেন্সি রেজলভ করা হবে এবং নির্দিষ্ট module এবং artifact ডাউনলোড হবে।
Module এবং Artifact হল Apache Ivy এর দুটি গুরুত্বপূর্ণ ধারণা:
Apache Ivy আপনার module এবং artifact রেজলভ করে, লাইব্রেরি বা ফাইলগুলোকে ডাউনলোড করে এবং আপনার প্রোজেক্টের ডিপেন্ডেন্সি ম্যানেজমেন্ট সহজ করে তোলে।
common.read_more