Apache Ivy হল একটি dependency management টুল যা Java প্রোজেক্টের বাইরের লাইব্রেরি ও ডিপেন্ডেন্সি স্বয়ংক্রিয়ভাবে ম্যানেজ করতে সাহায্য করে। এর মাধ্যমে আপনি ডিপেন্ডেন্সি রেজলভেশন, ভার্সন ম্যানেজমেন্ট, এবং রিপোজিটরি সাপোর্ট সহ লাইব্রেরি ডাউনলোড করতে পারেন।
Transitive Dependency Management Ivy-এর একটি গুরুত্বপূর্ণ ফিচার, যা এক লাইব্রেরির ডিপেন্ডেন্সি থেকে অন্য লাইব্রেরির ডিপেন্ডেন্সি স্বয়ংক্রিয়ভাবে রেজলভ করে। যখন একটি ডিপেন্ডেন্সি (যেমন একটি লাইব্রেরি) অন্য ডিপেন্ডেন্সির উপর নির্ভরশীল থাকে, তখন Ivy এই transitive dependencies বা পরোক্ষ ডিপেন্ডেন্সি গুলি সঠিকভাবে রেজলভ করে ডাউনলোড করে।
Transitive dependency হল একটি লাইব্রেরি বা ডিপেন্ডেন্সি যা সরাসরি আপনার প্রোজেক্টের অংশ নয়, তবে এটি অন্য একটি লাইব্রেরির উপর নির্ভরশীল এবং সেই লাইব্রেরির মাধ্যমে আপনার প্রোজেক্টে অন্তর্ভুক্ত হয়ে যায়।
উদাহরণস্বরূপ:
Ivy আপনার ডিপেন্ডেন্সি চেইনের মধ্যে একে একে সকল ডিপেন্ডেন্সি রেজলভ করে। Ivy স্বয়ংক্রিয়ভাবে transitive dependencies গুলি ডাউনলোড এবং রেজলভ করতে সক্ষম।
ধরা যাক, আপনার ivy.xml ফাইলের মধ্যে আপনি commons-lang3 ডিপেন্ডেন্সি যুক্ত করেছেন, এবং এটি commons-collections লাইব্রেরির উপর নির্ভরশীল।
ivy.xml ফাইল:
<ivy-module version="2.0">
<info organisation="com.example" module="my-app" />
<dependencies>
<dependency org="org.apache.commons" name="commons-lang3" rev="3.12.0"/>
</dependencies>
</ivy-module>
এখানে:
এভাবে Ivy আপনার transitive dependencies কে স্বয়ংক্রিয়ভাবে রেজলভ করে ডাউনলোড করতে সাহায্য করে, যা ম্যানুয়ালি ডিপেন্ডেন্সি ম্যানেজমেন্টকে সহজ এবং দক্ষ করে তোলে।
ধরা যাক, আপনি commons-lang3 লাইব্রেরি ব্যবহার করছেন, এবং এটি commons-logging লাইব্রেরির উপর নির্ভরশীল।
ivy.xml ফাইল:
<ivy-module version="2.0">
<info organisation="com.example" module="my-project" />
<dependencies>
<dependency org="org.apache.commons" name="commons-lang3" rev="3.12.0"/>
</dependencies>
</ivy-module>
এখানে:
Ivy resolve command:
ant resolve-dependencies
এটি ivy.xml অনুযায়ী ডিপেন্ডেন্সি রেজলভ করে এবং commons-lang3 সহ তার transitive dependencies (যেমন commons-logging) ডাউনলোড করবে।
কখনও কখনও, একটি লাইব্রেরি বিভিন্ন সংস্করণে নির্ভরশীল হতে পারে এবং এই কারণে ডিপেন্ডেন্সি কনফ্লিক্ট হতে পারে। Ivy স্বয়ংক্রিয়ভাবে কনফ্লিক্ট রেজলভ করে এবং সর্বশেষ ভার্সন বা আপনার নির্ধারিত সংস্করণ বেছে নেয়।
ধরা যাক, আপনার প্রোজেক্টে commons-lang3 লাইব্রেরি রয়েছে এবং commons-logging লাইব্রেরি দুটি সংস্করণে নির্ভরশীল (উদাহরণস্বরূপ 1.1.1 এবং 1.2.0)। Ivy আপনাকে সর্বশেষ সংস্করণ অথবা ডিফাইন করা সংস্করণ রেজলভ করার সুযোগ দেয়।
এখানে Ivy কনফ্লিক্ট রেজলভেশন হ্যান্ডল করবে এবং একটি নির্দিষ্ট সংস্করণ বেছে নেবে।
Transitive Dependency Management হল Apache Ivy এর একটি শক্তিশালী ফিচার যা আপনার ডিপেন্ডেন্সির বাইরের লাইব্রেরি বা ফাইলগুলির উপর নির্ভরশীল ডিপেন্ডেন্সি স্বয়ংক্রিয়ভাবে রেজলভ করে। এটি আপনাকে ডিপেন্ডেন্সি রেজলভেশন প্রক্রিয়া আরও সহজ এবং দক্ষভাবে সম্পাদন করতে সাহায্য করে। Ivy একে একে সকল লাইব্রেরি এবং তাদের ট্রান্সিটিভ ডিপেন্ডেন্সি রেজলভ করে, যাতে আপনাকে ম্যানুয়ালি সব কিছু হ্যান্ডল করতে না হয়। Transitive Dependency রেজলভেশন ও version conflict resolution সহ Ivy ডিপেন্ডেন্সি ম্যানেজমেন্টকে আরও স্বয়ংক্রিয় এবং নির্ভরযোগ্য করে তোলে।
common.read_more