Apache Ivy হল একটি শক্তিশালী ডিপেন্ডেন্সি ম্যানেজমেন্ট টুল যা Apache Ant বিল্ড টুলের সাথে একত্রে ব্যবহৃত হয়। এটি Java প্রোজেক্টের ডিপেন্ডেন্সি (লাইব্রেরি এবং ফাইল) ম্যানেজমেন্টে সহায়তা করে। Ivy এবং Ant এর ইন্টিগ্রেশন আপনাকে Java প্রোজেক্টে বাইরের লাইব্রেরি এবং ডিপেন্ডেন্সি সহজভাবে ম্যানেজ করতে সক্ষম করে, যাতে আপনি প্রোজেক্টের বিল্ড প্রক্রিয়া অটোমেট করতে পারেন।
ivy.xml
) সোজা এবং সহজ। এতে আপনি আপনার প্রয়োজনীয় লাইব্রেরি এবং তাদের সংস্করণ সহজে কনফিগার করতে পারেন।Ant বিল্ড স্ক্রিপ্টে Ivy টাস্ক ব্যবহারের জন্য প্রথমে Ivy প্লাগইনটি ডিফাইন করতে হবে।
<project name="IvyIntegrationExample" default="resolve-dependencies" basedir=".">
<!-- Defining Ivy task -->
<taskdef name="ivy" classname="org.apache.ivy.ant.IvyTask" />
<!-- Target to resolve dependencies -->
<target name="resolve-dependencies">
<ivy:resolve file="ivy.xml" />
</target>
</project>
এখানে:
<taskdef>
ট্যাগটি Ivy টাস্ক ব্যবহার করতে ডিফাইন করা হয়েছে। classname="org.apache.ivy.ant.IvyTask"
নির্দিষ্ট করে যে Ivy টাস্কটি Ant স্ক্রিপ্টে কিভাবে কাজ করবে।<ivy:resolve>
টাস্কটি ivy.xml
ফাইল থেকে ডিপেন্ডেন্সি রেজলভ করবে।ivy.xml
ফাইলের মধ্যে আপনার প্রোজেক্টের ডিপেন্ডেন্সি এবং রিপোজিটরি কনফিগার করুন।
<ivy-module version="2.0">
<info organisation="com.example" module="my-project" />
<repositories>
<repository name="central" url="https://repo.maven.apache.org/maven2" />
<repository name="ivy-repo" url="https://example.com/repository" />
</repositories>
<dependencies>
<dependency org="org.apache.commons" name="commons-lang3" rev="3.12.0" />
<dependency org="junit" name="junit" rev="4.13.1" />
</dependencies>
</ivy-module>
এখানে:
<repositories>
ট্যাগে আপনি বিভিন্ন রিপোজিটরি ডিফাইন করতে পারেন যেখানে থেকে লাইব্রেরি ডাউনলোড হবে।<dependencies>
ট্যাগে আপনার প্রোজেক্টের প্রয়োজনীয় লাইব্রেরি এবং তাদের সংস্করণ উল্লেখ করা হয়েছে।এখন, Ivy টাস্ক চালাতে Ant স্ক্রিপ্ট রান করুন:
ant resolve-dependencies
এটি ivy.xml
ফাইল অনুযায়ী ডিপেন্ডেন্সি রেজলভ করবে এবং লাইব্রেরি ডাউনলোড করবে।
এটি আপনার Ant স্ক্রিপ্টের মধ্যে লাইব্রেরি ডাউনলোড করার একটি সাধারণ প্রক্রিয়া। Ivy স্বয়ংক্রিয়ভাবে নির্দিষ্ট লাইব্রেরি, তাদের সংস্করণ এবং রিপোজিটরি অনুযায়ী ডিপেন্ডেন্সি রেজলভ করে।
<project name="IvyResolveExample" default="resolve-dependencies" basedir=".">
<taskdef name="ivy" classname="org.apache.ivy.ant.IvyTask" />
<target name="resolve-dependencies">
<ivy:resolve file="ivy.xml" />
<ivy:retrieve/>
</target>
</project>
এখানে:
<ivy:retrieve/>
টাস্কটি রেজলভড ডিপেন্ডেন্সি থেকে লাইব্রেরি ডাউনলোড করবে এবং lib
ডিরেক্টরিতে সেগুলি সংগ্রহ করবে।[ivy] :: resolving dependencies :: com.example#my-project;1.0
[ivy] confs: [default]
[ivy] found commons-lang3#commons-lang3;3.12.0 in central
[ivy] found junit#junit;4.13.1 in central
[ivy] :: resolution report :: [timestamp]
আপনি যদি নিজের প্রাইভেট রিপোজিটরি ব্যবহার করতে চান, তাহলে Ivy সেটিংসে প্রাইভেট রিপোজিটরি কনফিগার করতে পারেন।
<repositories>
<repository name="central" url="https://repo.maven.apache.org/maven2" />
<repository name="private-repo" url="https://example.com/ivy-repo" />
</repositories>
এটি Ivy কে নির্দেশ করে যে লাইব্রেরি ডাউনলোড করার জন্য প্রথমে পাবলিক Maven Central রিপোজিটরি এবং তারপরে প্রাইভেট রিপোজিটরি ব্যবহার করা হবে।
Ivy একাধিক স্তরের ডিপেন্ডেন্সি রেজলভ করে। মানে, যদি আপনার নির্দিষ্ট লাইব্রেরি অন্য একটি লাইব্রেরির উপর নির্ভরশীল হয়, তবে Ivy সেই লাইব্রেরিও ডাউনলোড করবে।
উদাহরণস্বরূপ, যদি আপনি Apache Commons ব্যবহার করেন এবং এটি Commons Collections এর উপর নির্ভরশীল হয়, তবে Ivy সেই Commons Collections লাইব্রেরিটিও স্বয়ংক্রিয়ভাবে ডাউনলোড করবে।
Ivy লাইব্রেরি ডাউনলোড করার পর তা Ivy Cache-এ সংরক্ষণ করে রাখে। পরবর্তী সময়ে আপনি যদি সেই লাইব্রেরি ব্যবহার করেন, তাহলে এটি আবার ডাউনলোড হবে না; বরং এটি ক্যাশ থেকে সরাসরি পাওয়া যাবে, যা সময় এবং ব্যান্ডউইথ সাশ্রয় করে।
Ivy Cache Location:
~/.ivy2/cache
এখানে, Ivy লাইব্রেরি এবং তাদের ডিপেন্ডেন্সির ক্যাশ সংরক্ষণ করে রাখে।
আপনি যদি একটি কাস্টম রিপোজিটরি ব্যবহার করতে চান, তবে Ivy সেটিংসে রিপোজিটরি URL নির্ধারণ করতে পারেন এবং ডিপেন্ডেন্সি ডাউনলোডের জন্য সেই কাস্টম রিপোজিটরি ব্যবহার করতে পারেন।
<repositories>
<repository name="private-repo" url="https://myprivate.repo/ivy"/>
</repositories>
এটি Ivy কে কাস্টম রিপোজিটরি থেকে লাইব্রেরি ডাউনলোড করতে সাহায্য করবে।
Apache Ivy Ant এর সঙ্গে ইন্টিগ্রেটেড হলে এটি একটি শক্তিশালী ডিপেন্ডেন্সি ম্যানেজমেন্ট টুল হয়ে ওঠে। Ivy ব্যবহার করে আপনি আপনার প্রোজেক্টের বাইরের লাইব্রেরি এবং ডিপেন্ডেন্সি সহজভাবে ম্যানেজ এবং রেজলভ করতে পারেন, এবং Ant বিল্ড স্ক্রিপ্টে সেই লাইব্রেরি ব্যবহার করতে পারেন। Ivy স্বয়ংক্রিয়ভাবে লাইব্রেরির ভার্সন ম্যানেজমেন্ট, রিপোজিটরি সাপোর্ট, এবং ট্রান্সিটিভ ডিপেন্ডেন্সি রেজলভেশন পরিচালনা করে, যা প্রোজেক্ট ডিপেন্ডেন্সি ম্যানেজমেন্টকে অনেক সহজ এবং কার্যকরী করে তোলে।
common.read_more