Apache Ivy হল একটি শক্তিশালী ডিপেন্ডেন্সি ম্যানেজমেন্ট টুল যা Java প্রোজেক্টে লাইব্রেরি ও ডিপেন্ডেন্সি ম্যানেজ করার জন্য ব্যবহৃত হয়। এটি বিভিন্ন রিপোজিটরি থেকে ডিপেন্ডেন্সি ডাউনলোড করতে সক্ষম, যেমন Maven Central বা Ivy Repository। Ivy ব্যবহার করে আপনি সহজে remote repositories থেকে লাইব্রেরি ডাউনলোড এবং রেজলভ করতে পারেন।
Remote repository হল এমন একটি রিপোজিটরি যা ইন্টারনেট বা আপনার প্রতিষ্ঠানের সার্ভারে অবস্থান করে এবং সেখানে বিভিন্ন লাইব্রেরি বা অ্যাপ্লিকেশন উপলব্ধ থাকে। এই রিপোজিটরি থেকে ডিপেন্ডেন্সি সংগ্রহ করা হয় যা প্রোজেক্টের জন্য প্রয়োজনীয়।
প্রধানত, দুটি ধরনের রিপোজিটরি ব্যবহৃত হয়:
Apache Ivy দুটি ধরণের রিপোজিটরি সাপোর্ট করে: Maven এবং Ivy রিপোজিটরি।
Maven Repository হলো একটি পাবলিক রিপোজিটরি যা Apache Maven ব্যবহারকারীদের জন্য লাইব্রেরি সরবরাহ করে থাকে। Ivy এই রিপোজিটরি থেকে লাইব্রেরি ডাউনলোড করতে সক্ষম।
ivy.xml
ফাইলে Maven Repository ব্যবহার করার জন্য আপনাকে repositories ট্যাগে রিপোজিটরি URL নির্ধারণ করতে হবে।
<ivy-module version="2.0">
<info organisation="com.example" module="my-project" />
<repositories>
<repository name="maven-central" url="https://repo.maven.apache.org/maven2" />
</repositories>
<dependencies>
<dependency org="org.apache.commons" name="commons-lang3" rev="3.12.0"/>
</dependencies>
</ivy-module>
এখানে:
<repository>
ট্যাগে Maven Central Repository এর URL দেওয়া হয়েছে যেখানে থেকে ডিপেন্ডেন্সি ডাউনলোড হবে।<dependency>
ট্যাগে commons-lang3 লাইব্রেরি এবং তার সংস্করণ উল্লেখ করা হয়েছে।এখন, Ant স্ক্রিপ্টে Ivy টাস্ক ব্যবহার করে Maven Central Repository থেকে ডিপেন্ডেন্সি রেজলভ এবং ডাউনলোড করা যাবে।
<project name="MavenIvyExample" 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:resolve>
টাস্ক ivy.xml ফাইল থেকে ডিপেন্ডেন্সি রেজলভ করবে।<ivy:retrieve>
টাস্ক ডিপেন্ডেন্সি ডাউনলোড করবে এবং lib/ ডিরেক্টরিতে রাখবে।Ivy Repository হলো Apache Ivy-এর নিজস্ব রিপোজিটরি যেখানে Ivy লাইব্রেরি এবং অ্যাপ্লিকেশন স্টোর করা হয়। আপনি নিজের প্রোজেক্টের জন্য একটি Ivy repository তৈরি করতে পারেন বা পাবলিক Ivy repositories থেকে ডিপেন্ডেন্সি ডাউনলোড করতে পারেন।
ivy.xml
ফাইলে Ivy Repository ব্যবহার করতে আপনাকে রিপোজিটরি URL নির্ধারণ করতে হবে।
<ivy-module version="2.0">
<info organisation="com.example" module="my-project" />
<repositories>
<repository name="ivy-repo" url="https://example.com/ivy-repo"/>
</repositories>
<dependencies>
<dependency org="org.apache.commons" name="commons-lang3" rev="3.12.0"/>
</dependencies>
</ivy-module>
এখানে:
<repository>
ট্যাগে Ivy Repository এর URL দেওয়া হয়েছে, যেখান থেকে ডিপেন্ডেন্সি ডাউনলোড হবে।<dependency>
ট্যাগে commons-lang3 লাইব্রেরি এবং তার সংস্করণ উল্লেখ করা হয়েছে।আপনি Ivy-এর ivy.xml
ফাইল ব্যবহার করে এই রিপোজিটরি থেকে ডিপেন্ডেন্সি রেজলভ এবং ডাউনলোড করতে পারেন।
<project name="IvyRepoExample" 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:resolve>
টাস্ক ivy.xml ফাইল থেকে ডিপেন্ডেন্সি রেজলভ করবে।<ivy:retrieve>
টাস্ক ডিপেন্ডেন্সি ডাউনলোড করবে এবং lib/ ডিরেক্টরিতে সংরক্ষণ করবে।আপনি যদি নিজের প্রাইভেট রিপোজিটরি ব্যবহার করতে চান, তবে Ivy তে কাস্টম রিপোজিটরি কনফিগার করতে পারেন।
<repositories>
<repository name="my-repo" url="https://my-private-repo.com/ivy"/>
</repositories>
এখানে:
<repository>
ট্যাগটি আপনার কাস্টম রিপোজিটরি URL উল্লেখ করবে।এটি ব্যবহার করার মাধ্যমে আপনি আপনার নিজস্ব লাইব্রেরি রিপোজিটরি থেকে ডিপেন্ডেন্সি ডাউনলোড করতে পারবেন।
একাধিক রিপোজিটরি ব্যবহার করার জন্য Ivy তে repositories ট্যাগে একাধিক রিপোজিটরি URL দেওয়া যেতে পারে। নিচে তার একটি উদাহরণ দেখানো হলো:
<repositories>
<repository name="maven-central" url="https://repo.maven.apache.org/maven2"/>
<repository name="ivy-repo" url="https://my-private-repo.com/ivy"/>
</repositories>
এখানে:
এইভাবে, Ivy প্রথমে Maven Central থেকে লাইব্রেরি ডাউনলোড করার চেষ্টা করবে এবং যদি তা না পাওয়া যায়, তবে Ivy Repo থেকে ডাউনলোড করবে।
একটি রিপোজিটরি থেকে artifact রিট্রিভ (retrieve) করতে আপনাকে Ivy টাস্কের মাধ্যমে নির্দিষ্ট artifact retrieve করতে হবে।
<target name="retrieve">
<ivy:retrieve pattern="lib/[artifact]-[revision](-[classifier]).[ext]"/>
</target>
এখানে:
<ivy:retrieve>
টাস্কটি নির্দিষ্ট artifact ডাউনলোড করবে এবং lib/ ডিরেক্টরিতে রাখবে।pattern
অ্যাট্রিবিউট ব্যবহার করে আপনি ডাউনলোড করা ফাইলের নামের প্যাটার্ন কাস্টমাইজ করতে পারেন।Apache Ivy-এর মাধ্যমে আপনি remote repositories থেকে লাইব্রেরি ডাউনলোড করতে পারেন, যেমন Maven বা Ivy repository থেকে। আপনি ivy.xml ফাইলের মাধ্যমে আপনার dependencies এবং repositories কনফিগার করে লাইব্রেরি স্বয়ংক্রিয়ভাবে রেজলভ এবং ডাউনলোড করতে পারেন। Ivy কাস্টম রিপোজিটরি, একাধিক রিপোজিটরি সাপোর্ট এবং ট্রান্সিটিভ ডিপেন্ডেন্সি রেজলভেশন সিস্টেমের মাধ্যমে ডিপেন্ডেন্সি ম্যানেজমেন্টকে আরো সহজ এবং শক্তিশালী করে তোলে।
common.read_more