Apache Ivy-এর Ivy settings কনফিগারেশন ফাইলটি (সাধারণত ivysettings.xml
নামে পরিচিত) Ivy কনফিগারেশন, রিপোজিটরি, ক্যাশ, এবং অন্যান্য গুরুত্বপূর্ণ সেটিংস কনফিগার করার জন্য ব্যবহৃত হয়। এই ফাইলটি Ivy এর ডিপেন্ডেন্সি রেজলভেশন প্রক্রিয়া নিয়ন্ত্রণ করে এবং Ivy কে নির্দেশ দেয় কোথা থেকে ডিপেন্ডেন্সি সংগ্রহ করতে হবে, কীভাবে ডিপেন্ডেন্সি ক্যাশ করতে হবে, এবং আরো অনেক বিষয়।
Ivy Settings ফাইলের মধ্যে মূলত repositories, resolvers, এবং caches এর কনফিগারেশন থাকে। নিচে একটি সাধারণ ivysettings.xml কনফিগারেশন ফাইলের উদাহরণ দেওয়া হলো:
<ivysettings>
<!-- Repositories Configuration -->
<repositories>
<repository name="central" url="https://repo.maven.apache.org/maven2" />
<repository name="local" url="file://${user.home}/.ivy2/local" />
</repositories>
<!-- Resolver Configuration -->
<resolvers>
<resolver name="default" class="org.apache.ivy.plugins.resolver.URLResolver">
<artifact pattern="https://repo.maven.apache.org/maven2/[organisation]/[module]/[revision]/[artifact]-[revision].[ext]" />
</resolver>
<resolver name="local" class="org.apache.ivy.plugins.resolver.FileSystemResolver">
<artifact pattern="file://${user.home}/.ivy2/local/[organisation]/[module]/[revision]/[artifact]-[revision].[ext]" />
</resolver>
</resolvers>
<!-- Cache Configuration -->
<cache>
<dir name="${user.home}/.ivy2/cache"/>
</cache>
</ivysettings>
Repositories ট্যাগটি রিপোজিটরি কনফিগার করতে ব্যবহৃত হয় যেখানে থেকে Ivy ডিপেন্ডেন্সি সংগ্রহ করবে। সাধারণত দুটি ধরনের রিপোজিটরি ব্যবহৃত হয়:
Repositories উদাহরণ:
<repositories>
<repository name="central" url="https://repo.maven.apache.org/maven2" />
<repository name="local" url="file://${user.home}/.ivy2/local" />
</repositories>
এখানে:
Resolvers ট্যাগটি Ivy কে নির্দেশ করে যে কোন রিপোজিটরি ব্যবহার করবে ডিপেন্ডেন্সি রেজলভ করার জন্য। Ivy সাধারণত একটি URL resolver বা File System resolver ব্যবহার করে থাকে।
<resolvers>
<resolver name="default" class="org.apache.ivy.plugins.resolver.URLResolver">
<artifact pattern="https://repo.maven.apache.org/maven2/[organisation]/[module]/[revision]/[artifact]-[revision].[ext]" />
</resolver>
<resolver name="local" class="org.apache.ivy.plugins.resolver.FileSystemResolver">
<artifact pattern="file://${user.home}/.ivy2/local/[organisation]/[module]/[revision]/[artifact]-[revision].[ext]" />
</resolver>
</resolvers>
এখানে:
Cache ট্যাগটি Ivy-এর ক্যাশ কনফিগারেশন নির্ধারণ করতে ব্যবহৃত হয়, যা ডিপেন্ডেন্সি ডাউনলোডের পরে সেই লাইব্রেরিগুলিকে ক্যাশে সংরক্ষণ করে। এর মাধ্যমে আপনি ভবিষ্যতে পুনরায় লাইব্রেরি ডাউনলোড না করেও তা ব্যবহার করতে পারবেন।
<cache>
<dir name="${user.home}/.ivy2/cache"/>
</cache>
এখানে:
${user.home}/.ivy2/cache
: এই ডিরেক্টরিতে ডিপেন্ডেন্সি ক্যাশ করা হবে। এটি Ivy দ্বারা স্বয়ংক্রিয়ভাবে ব্যবহৃত হবে।যদি আপনি প্রাইভেট রিপোজিটরি ব্যবহার করেন, তবে credentials কনফিগার করতে হবে। এটি সাধারণত লগইন এবং পাসওয়ার্ড সহ নিরাপদ এক্সেসের জন্য ব্যবহৃত হয়।
<credentials host="repo.example.com" username="myuser" password="mypassword" />
এখানে:
ধরা যাক, আপনি একটি ivy.xml
ফাইল ব্যবহার করছেন যেখানে আপনি রিপোজিটরি এবং ডিপেন্ডেন্সি উল্লেখ করেছেন। নিচে একটি উদাহরণ দেওয়া হলো:
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.xml
ফাইলে commons-lang3 লাইব্রেরির জন্য নির্দিষ্ট রিপোজিটরি এবং সংস্করণ উল্লেখ করা হয়েছে।ivysettings.xml
ফাইলের কনফিগারেশন অনুসারে Ivy ডিপেন্ডেন্সি ডাউনলোড করবে।আপনি Ivy টাস্কের মাধ্যমে Ivy settings কনফিগারেশন ফাইল ব্যবহার করতে পারেন, যা রিপোজিটরি এবং ক্যাশ কনফিগার করে দেয়।
<project name="IvyExample" default="resolve-dependencies" basedir=".">
<taskdef name="ivy" classname="org.apache.ivy.ant.IvyTask">
<classpath>
<pathelement location="path/to/ivy.jar"/>
</classpath>
</taskdef>
<target name="resolve-dependencies">
<ivy:resolve file="ivy.xml" settings="ivysettings.xml"/>
</target>
</project>
এখানে:
settings="ivysettings.xml"
ব্যবহার করে Ivy-কে Ivy settings কনফিগারেশন ফাইলটি নির্দেশ করা হয়েছে।Ivy Settings কনফিগারেশন ফাইল হল Ivy ডিপেন্ডেন্সি ম্যানেজমেন্ট সিস্টেমের একটি অত্যন্ত গুরুত্বপূর্ণ অংশ, যা বিভিন্ন রিপোজিটরি, ক্যাশ, এবং রেজলভার কনফিগার করে। এটি Ivy-কে নির্দেশ করে কোথা থেকে ডিপেন্ডেন্সি ডাউনলোড হবে, কীভাবে ক্যাশ করা হবে, এবং কীভাবে রিপোজিটরিতে ক্রেডেনশিয়াল ম্যানেজ করতে হবে। Ivy settings ফাইলের মাধ্যমে আপনি রিপোজিটরি এবং ডিপেন্ডেন্সি রেজলভেশন পলিসি কাস্টমাইজ করতে পারবেন, যা আপনার প্রোজেক্টের ডিপেন্ডেন্সি ম্যানেজমেন্ট প্রক্রিয়া সহজ এবং শক্তিশালী করে তোলে।
Apache Ivy একটি ডিপেনডেন্সি ম্যানেজমেন্ট টুল যা Java প্রোজেক্টে লাইব্রেরি বা ডিপেনডেন্সি রেজলভ এবং ম্যানেজ করতে সহায়তা করে। Ivy Settings ফাইল (যা সাধারণত ivysettings.xml
নামে পরিচিত) আইভি টুলের কনফিগারেশন ফাইল হিসেবে ব্যবহৃত হয় এবং এটি Ivy কে নির্দিষ্ট কনফিগারেশন ও রিপোজিটরি সম্পর্কে নির্দেশ দেয়। এই ফাইলটি মূলত Ivy-এর ডিপেনডেন্সি রেজলভেশন, রিপোজিটরি ম্যানেজমেন্ট এবং অন্যান্য কার্যক্রম কাস্টমাইজ করার জন্য ব্যবহৃত হয়।
Ivy Settings ফাইল তে আপনি কাস্টম রিপোজিটরি, ডিপেনডেন্সি রেজলভেশন পলিসি, ক্যাশিং এবং অন্যান্য নির্দিষ্ট কনফিগারেশন উল্লেখ করতে পারেন। এটি Ivy টাস্কগুলির জন্য সেটিংস কনফিগার করার সুবিধা দেয়, যার মাধ্যমে আপনি ডিপেনডেন্সি রেজলভেশন পদ্ধতি কাস্টমাইজ করতে পারেন।
ivysettings.xml
ফাইলের মূল গঠন সাধারণত নিচের মতো হয়:
<ivysettings>
<settings defaultResolver="default" />
<resolvers>
<!-- Define a resolver for public repositories (Maven Central) -->
<ibiblio name="default" root="https://repo.maven.apache.org/maven2/" m2compatible="true"/>
<!-- Define a custom repository resolver -->
<ibiblio name="customRepo" root="http://my.custom.repo/repo/" m2compatible="true"/>
</resolvers>
<caches>
<!-- Specify local cache location -->
<cache path="lib/cache"/>
</caches>
</ivysettings>
এখানে:
<settings>
ট্যাগের মধ্যে ডিফল্ট resolver কনফিগার করা হয়েছে।<resolvers>
ট্যাগের মধ্যে রিপোজিটরি কনফিগার করা হয়েছে (যেমন Maven Central এবং Custom Repository)।<caches>
ট্যাগের মধ্যে ক্যাশ লোকেশন নির্ধারণ করা হয়েছে।<settings>
:defaultResolver
: এটি ডিফল্ট resolver নির্ধারণ করে, যা Ivy দ্বারা ডিপেনডেন্সি রেজলভ করার জন্য ব্যবহৃত হবে।<resolvers>
:<ibiblio>
: এটি একটি রিপোজিটরি রেজলভার। এখানে আপনি পাবলিক বা কাস্টম রিপোজিটরি ব্যবহার করতে পারেন, যেমন Maven Central বা আপনার নিজস্ব কাস্টম রিপোজিটরি। এর মাধ্যমে Ivy ডিপেনডেন্সি খুঁজে পাবে।root
: এটি রিপোজিটরির বেস URL। যেমন, Maven Central এর জন্য https://repo.maven.apache.org/maven2/
।m2compatible
: এটি মেভেন রিপোজিটরি স্টাইলের সাথে ইন্টিগ্রেশন নিশ্চিত করে (যেমন Maven-compatible রিপোজিটরি)।<caches>
:<cache>
: এটি ক্যাশ ফোল্ডারের লোকেশন নির্ধারণ করে। Ivy ডিপেনডেন্সি ডাউনলোড করার পর ক্যাশে ফাইলগুলো সংরক্ষণ করে যাতে পুনরায় ডাউনলোড করার প্রয়োজন না হয়।<properties>
:<ivysettings>
<settings defaultResolver="centralResolver"/>
<resolvers>
<!-- Maven Central Resolver -->
<ibiblio name="centralResolver" root="https://repo.maven.apache.org/maven2/" m2compatible="true"/>
<!-- Custom Repository Resolver -->
<ibiblio name="myCustomRepo" root="http://my.custom.repo/repo/" m2compatible="true"/>
</resolvers>
<caches>
<cache path="lib/cache"/>
</caches>
</ivysettings>
এখানে:
defaultResolver="centralResolver"
: Ivy-এর ডিফল্ট রিপোজিটরি কনফিগার করা হয়েছে যা Maven Central।root="https://repo.maven.apache.org/maven2/"
: Maven Central রিপোজিটরির URL।<ivysettings>
<settings defaultResolver="myCustomRepo"/>
<resolvers>
<!-- Custom Repository Resolver -->
<ibiblio name="myCustomRepo" root="http://my.custom.repo/repo/" m2compatible="true"/>
</resolvers>
<caches>
<cache path="custom/cache"/>
</caches>
</ivysettings>
এখানে:
root="http://my.custom.repo/repo/"
: কাস্টম রিপোজিটরি URL।<cache path="custom/cache"/>
: ক্যাশের লোকেশন কাস্টমাইজ করা হয়েছে।Ivy Settings ফাইল হল Apache Ivy টুলের কনফিগারেশন ফাইল, যা ডিপেনডেন্সি রেজলভেশন, ক্যাশিং, এবং রিপোজিটরি কনফিগারেশন ম্যানেজমেন্টের জন্য ব্যবহৃত হয়। এটি আপনাকে কাস্টম রিপোজিটরি তৈরি এবং কনফিগার করতে সহায়তা করে, যা আপনার ডিপেনডেন্সি ম্যানেজমেন্টকে আরও কাস্টমাইজেবল এবং কার্যকরী করে তোলে। ivysettings.xml
ফাইলের মাধ্যমে আপনি রিপোজিটরি রেজলভার, ক্যাশ লোকেশন এবং ডিপেনডেন্সি রেজলভেশন কৌশল নির্ধারণ করতে পারেন, যা আপনাকে আপনার প্রোজেক্টে প্রয়োজনীয় লাইব্রেরি সঠিকভাবে রেজলভ এবং ম্যানেজ করতে সাহায্য করে।
Apache Ivy হল একটি ডিপেনডেন্সি ম্যানেজমেন্ট টুল যা Java প্রজেক্টের জন্য লাইব্রেরি এবং ডিপেনডেন্সি ম্যানেজমেন্টকে সহজ করে তোলে। Ivy ব্যবহারকারীদের default settings কনফিগারেশন করার জন্য একটি কাস্টম ফাইল ivysettings.xml
প্রদান করে। এই ফাইলটির মাধ্যমে, আপনি Ivy এর কার্যক্রমের জন্য ডিফল্ট কনফিগারেশন সেট করতে পারেন, যেমন ডিপেনডেন্সি রেজলভেশন, রিপোজিটরি কনফিগারেশন, ক্যাশিং পাথ এবং অন্যান্য সেটিংস।
Default settings কনফিগারেশনের মাধ্যমে আপনি Ivy এর কমন কনফিগারেশন সেন্ট্রালাইজ করতে পারেন, যা সব প্রকল্পে একযোগভাবে ব্যবহার করা যাবে। এর মাধ্যমে প্রজেক্টগুলোতে একে অপরের কনফিগারেশন পুনরায় ব্যবহার করা যায়, ফলে ডিপেনডেন্সি ম্যানেজমেন্ট প্রক্রিয়া আরও সহজ হয়।
ivysettings.xml
ফাইলের ভূমিকাivysettings.xml
ফাইলটি Ivy এর default configuration গুলি সংজ্ঞায়িত করে এবং এটি Ivy টুলের জন্য সাধারণ কনফিগারেশন ফাইল হিসেবে কাজ করে। এটি বিভিন্ন রিপোজিটরি, রিজলভারের কনফিগারেশন এবং ক্যাশিং সম্পর্কিত সেটিংস ধারণ করে, যা Ivy টুলের চলাচল এবং ডিপেনডেন্সি রেজলভেশনের আচরণ নিয়ন্ত্রণ করে।
এখানে ivysettings.xml
ফাইলের কিছু সাধারণ সেটিংস এবং কনফিগারেশন দেওয়া হলো যা Ivy ব্যবহারকারীদের জন্য ডিফল্ট সেটিংস কনফিগার করতে সহায়ক।
ivysettings.xml
Example:<ivysettings>
<!-- Define default repositories -->
<repositories>
<!-- Maven Central Repository -->
<repository name="central" url="https://repo.maven.apache.org/maven2"/>
<!-- Local Ivy Repository -->
<repository name="local" m2compatible="true" root="file://${user.home}/.ivy2/repository"/>
<!-- Custom Repository -->
<repository name="custom-repo" url="https://mycustomrepo.com/repository"/>
</repositories>
<!-- Define resolvers -->
<resolvers>
<!-- Chain resolver (check multiple repositories) -->
<chain name="mainChain">
<resolver name="central"/>
<resolver name="local"/>
<resolver name="custom-repo"/>
</chain>
<!-- Specific resolver for Maven repository -->
<mavenresolver name="maven" root="https://repo.maven.apache.org/maven2"/>
</resolvers>
<!-- Define the cache path -->
<cachepath>
<path location="${user.home}/.ivy2/cache"/>
</cachepath>
<!-- Configure default conflict manager (for version conflicts) -->
<conflict-manager strategy="latest-revision"/>
<!-- Enable verbose mode for debugging -->
<logging level="verbose"/>
</ivysettings>
<repositories>
: এখানে রিপোজিটরির কনফিগারেশন করা হয়েছে। Maven Central, local repository, এবং একটি কাস্টম রিপোজিটরি এখানে উল্লেখ করা হয়েছে।<resolvers>
: এটি নির্ধারণ করে কোন রিপোজিটরি থেকে ডিপেনডেন্সি রেজলভ হবে। এখানে একটি chain resolver ব্যবহার করা হয়েছে, যা একাধিক রিপোজিটরি থেকে ডিপেনডেন্সি রেজলভ করে।<cachepath>
: এখানে ক্যাশের লোকেশন নির্ধারণ করা হয়েছে, যেখানে Ivy ডিপেনডেন্সি ডাউনলোড করে এবং সেগুলি সংরক্ষণ করে।<conflict-manager>
: এই সেটিংসটি নির্ধারণ করে কিভাবে ডিপেনডেন্সি কনফ্লিক্ট রেজলভ করা হবে। এখানে latest-revision
কনফ্লিক্ট ম্যানেজার ব্যবহার করা হয়েছে, যা সর্বশেষ সংস্করণ গ্রহণ করবে।<logging>
: লগিং সেটিংসটি verbose
মোডে কনফিগার করা হয়েছে, যার মাধ্যমে Ivy এর কার্যক্রমের বিস্তারিত আউটপুট পাওয়া যাবে।Ivy এর ডিফল্ট রিপোজিটরি কনফিগারেশনটি খুবই গুরুত্বপূর্ণ। রিপোজিটরি সেটিংসের মাধ্যমে আপনি ডিপেনডেন্সি কোথা থেকে রেজলভ করবেন তা নির্ধারণ করতে পারেন। ডিফল্টভাবে, Ivy Maven Central বা লোকাল Ivy Repository ব্যবহার করে ডিপেনডেন্সি খুঁজে বের করে।
<repositories>
<!-- Default Maven Central repository -->
<repository name="central" url="https://repo.maven.apache.org/maven2"/>
<!-- Local repository -->
<repository name="local" root="file://${user.home}/.ivy2/repository" m2compatible="true"/>
</repositories>
m2compatible="true"
অ্যাট্রিবিউট ব্যবহার করে আপনি নিশ্চিত করতে পারেন যে আপনার লোকাল রিপোজিটরি Maven এর ফরম্যাট অনুসরণ করবে।ডিফল্ট ক্যাশ ফোল্ডারের অবস্থান নির্ধারণ করা খুবই গুরুত্বপূর্ণ, কারণ Ivy ডিপেনডেন্সি ডাউনলোড করার পর সেটি ক্যাশে সংরক্ষণ করে।
<cachepath>
<path location="${user.home}/.ivy2/cache"/>
</cachepath>
${user.home}/.ivy2/cache
লোকেশনে সংরক্ষণ করা হবে।Ivy কনফ্লিক্ট রেজলভেশন ম্যানেজার ব্যবহার করে ডিপেনডেন্সি কনফ্লিক্টগুলি রেজলভ করতে পারে। latest-revision
কনফিক্ট ম্যানেজার সর্বশেষ সংস্করণকে অগ্রাধিকার দেয়।
<conflict-manager strategy="latest-revision"/>
latest-revision
কৌশলটি ব্যবহার করলে Ivy সর্বশেষ সংস্করণটি নির্বাচিত করবে যখন একই ডিপেনডেন্সির বিভিন্ন সংস্করণ থাকবে।ivy.xml
Ivy এর ivysettings.xml
ফাইলটি ivy.xml
ফাইলে উল্লেখ করা ডিপেনডেন্সি রেজলভেশন এবং অন্যান্য কার্যক্রমের জন্য গাইড হিসেবে কাজ করে। যখন আপনি ivy.xml
ফাইলের মাধ্যমে ডিপেনডেন্সি রেজলভ করতে যান, Ivy ivysettings.xml
ফাইলটি লোড করে এবং সেই অনুযায়ী ডিপেনডেন্সি রেজলভেশন সম্পন্ন করে।
<project name="IvyExample" default="resolve-dependencies">
<taskdef name="ivy" classname="org.apache.ivy.ant.IvyTask"/>
<target name="resolve-dependencies">
<!-- Use the default ivysettings.xml for resolver configuration -->
<ivy:settings file="path/to/ivysettings.xml"/>
<ivy:retrieve/>
</target>
</project>
ivy:settings
টাস্কটি ivysettings.xml
ফাইলের কনফিগারেশন লোড করবে এবং তারপরে ivy:retrieve
টাস্কটি ডিপেনডেন্সি ডাউনলোড করবে।Ivy Default Settings কনফিগারেশন ivysettings.xml
ফাইলে করা হয়, যা Ivy এর কার্যকলাপ নিয়ন্ত্রণ করে। ডিফল্ট রিপোজিটরি, ক্যাশিং, কনফ্লিক্ট ম্যানেজার এবং অন্যান্য সেটিংস Ivy এর কার্যক্ষমতা পরিচালনা করতে সাহায্য করে। আপনি এই কনফিগারেশনগুলি কাস্টমাইজ করে আপনার প্রজেক্টের ডিপেনডেন্সি ম্যানেজমেন্ট আরও সুবিধাজনক এবং কার্যকরী করতে পারেন। Ivysettings.xml ফাইলের মাধ্যমে আপনি রিপোজিটরি, কনফ্লিক্ট ম্যানেজমেন্ট, ক্যাশিং এবং অন্যান্য সেটিংস নির্ধারণ করতে পারেন যা ডিপেনডেন্সি রেজলভেশন প্রক্রিয়াকে সহজ ও নমনীয় করে তোলে।
অ্যাপাচি আইভি (Apache Ivy) একটি শক্তিশালী ডিপেন্ডেন্সি ম্যানেজমেন্ট টুল যা বিশেষভাবে জাভা প্রোজেক্টের ডিপেন্ডেন্সি ম্যানেজমেন্টের জন্য ব্যবহৃত হয়। আইভি বিভিন্ন ধরনের resolvers প্রদান করে যা ডিপেন্ডেন্সি সংগ্রহ এবং রেজোলিউশন প্রক্রিয়া পরিচালনা করতে সহায়তা করে। প্রতিটি রেজলভার ডিপেন্ডেন্সি খুঁজতে বিভিন্ন উৎস (repositories) ব্যবহার করে। এই রেজলভারগুলো কনফিগার করে আপনি ডিপেন্ডেন্সি সংগ্রহের প্রক্রিয়াকে আরও কাস্টমাইজড এবং নিয়ন্ত্রিত করতে পারেন।
আইভির মধ্যে বেশ কিছু বিল্ট-ইন resolvers রয়েছে, যেমন chain resolver, url resolver, filesystem resolver, maven resolver, inline resolver ইত্যাদি। আমরা এখানে বিভিন্ন resolver কনফিগারেশনের উদাহরণ দেখবো, যা আপনার ডিপেন্ডেন্সি সংগ্রহ প্রক্রিয়া আরও কার্যকরী করতে সাহায্য করবে।
Chain Resolver একাধিক রেজলভারের মধ্যে অনুসন্ধান চালায়, একটির পর এক। এটি প্রথমে একটি রেজলভারে ডিপেন্ডেন্সি অনুসন্ধান করে, যদি সেখানে না পাওয়া যায়, তবে পরবর্তী রেজলভারে অনুসন্ধান চালায়। এটি অনেক সময় ব্যবহৃত হয় যখন আপনি একাধিক রিপোজিটরি থেকে ডিপেন্ডেন্সি অনুসন্ধান করতে চান।
<ivy-module version="2.0">
<info organisation="com.example" module="myapp" revision="1.0"/>
<repositories>
<chain name="myChainResolver">
<resolver ref="local-repo"/>
<resolver ref="remote-repo"/>
</chain>
<!-- Local repository -->
<repository name="local-repo" path="path/to/local/repository"/>
<!-- Remote repository -->
<repository name="remote-repo" url="https://repo.maven.apache.org/maven2"/>
</repositories>
<dependencies>
<dependency org="org.apache.commons" name="commons-lang3" rev="3.9"/>
</dependencies>
</ivy-module>
এখানে:
myChainResolver
প্রথমে local-repo
তে ডিপেন্ডেন্সি অনুসন্ধান করবে, তারপর যদি না পায়, তবে remote-repo
তে অনুসন্ধান করবে।URL Resolver রিমোট URL থেকে ডিপেন্ডেন্সি সংগ্রহ করতে ব্যবহৃত হয়। এটি একটি নির্দিষ্ট URL থেকে ডিপেন্ডেন্সি ডাউনলোড করে, যেমন Maven Central বা অন্য কোনো পাবলিক বা প্রাইভেট রিপোজিটরি।
<ivy-module version="2.0">
<info organisation="com.example" module="myapp" revision="1.0"/>
<repositories>
<resolver name="url-repo" url="https://repo.maven.apache.org/maven2"/>
</repositories>
<dependencies>
<dependency org="org.apache.commons" name="commons-lang3" rev="3.9"/>
</dependencies>
</ivy-module>
এখানে:
https://repo.maven.apache.org/maven2
URL থেকে লাইব্রেরি ডাউনলোড করবে।File System Resolver লোকাল ফাইল সিস্টেম থেকে ডিপেন্ডেন্সি সংগ্রহ করতে ব্যবহৃত হয়। এটি মূলত তখন ব্যবহৃত হয় যখন আপনার ডিপেন্ডেন্সি লোকাল ডিরেক্টরিতে সংরক্ষিত থাকে এবং আপনি সেই ডিরেক্টরি থেকে লাইব্রেরি সংগ্রহ করতে চান।
<ivy-module version="2.0">
<info organisation="com.example" module="myapp" revision="1.0"/>
<repositories>
<resolver name="local-file-repo" type="filesystem" path="file:///path/to/local/repository"/>
</repositories>
<dependencies>
<dependency org="org.apache.commons" name="commons-lang3" rev="3.9"/>
</dependencies>
</ivy-module>
এখানে:
file:///path/to/local/repository
থেকে ডিপেন্ডেন্সি খুঁজে বের করবে।Maven Resolver মাভেন রিপোজিটরি থেকে ডিপেন্ডেন্সি সংগ্রহ করতে ব্যবহৃত হয়। এটি Maven Central বা আপনার প্রাইভেট মাভেন রিপোজিটরি থেকে লাইব্রেরি সংগ্রহ করতে সক্ষম।
<ivy-module version="2.0">
<info organisation="com.example" module="myapp" revision="1.0"/>
<repositories>
<resolver name="maven-central" maven="true"/>
</repositories>
<dependencies>
<dependency org="org.apache.commons" name="commons-lang3" rev="3.9"/>
</dependencies>
</ivy-module>
এখানে:
Inline Resolver এমন একটি রেজলভার, যা ডিপেন্ডেন্সি সংগ্রহ করার জন্য URL বা File System এর মতো নির্দিষ্ট সোর্স সরাসরি ডিফাইন করার জন্য ব্যবহৃত হয়।
<ivy-module version="2.0">
<info organisation="com.example" module="myapp" revision="1.0"/>
<repositories>
<resolver name="inline-repo" url="https://repo.maven.apache.org/maven2"/>
</repositories>
<dependencies>
<dependency org="org.apache.commons" name="commons-lang3" rev="3.9"/>
</dependencies>
</ivy-module>
এখানে:
আপনি বিভিন্ন ধরনের resolvers একত্রিত করে একটি কম্বিনেশন তৈরি করতে পারেন। এর মাধ্যমে আপনি একাধিক উৎস থেকে লাইব্রেরি সংগ্রহ করতে পারবেন। উদাহরণস্বরূপ, আপনি Chain Resolver ব্যবহার করতে পারেন যাতে প্রথমে লোকাল রিপোজিটরি থেকে ডিপেন্ডেন্সি সংগ্রহ করা হয় এবং যদি সেখানে না পাওয়া যায় তবে রিমোট রিপোজিটরি থেকে সংগ্রহ করা হয়।
<ivy-module version="2.0">
<info organisation="com.example" module="myapp" revision="1.0"/>
<repositories>
<chain name="myChainResolver">
<resolver ref="local-file-repo"/>
<resolver ref="maven-central"/>
</chain>
<!-- File system resolver -->
<resolver name="local-file-repo" type="filesystem" path="file:///path/to/local/repository"/>
<!-- Maven Central resolver -->
<resolver name="maven-central" maven="true"/>
</repositories>
<dependencies>
<dependency org="org.apache.commons" name="commons-lang3" rev="3.9"/>
</dependencies>
</ivy-module>
এখানে:
Apache Ivy এর Resolvers আপনাকে ডিপেন্ডেন্সি সংগ্রহের জন্য বিভিন্ন উৎস থেকে লাইব্রেরি এবং রিসোর্স খুঁজতে সাহায্য করে। আপনি Chain Resolver, URL Resolver, File System Resolver, Maven Resolver, এবং Inline Resolver এর মতো বিভিন্ন রেজলভার ব্যবহার করে ডিপেন্ডেন্সি ম্যানেজমেন্ট প্রক্রিয়াকে কাস্টমাইজ করতে পারেন। Chain Resolver একাধিক রেজলভারের মধ্যে অনুসন্ধান করে, URL Resolver রিমোট সার্ভার থেকে ডিপেন্ডেন্সি ডাউনলোড করে, File System Resolver লোকাল ফাইল সিস্টেম থেকে লাইব্রেরি সংগ্রহ করে, এবং Maven Resolver মাভেন রিপোজিটরি থেকে ডিপেন্ডেন্সি সরবরাহ করে।
অ্যাপাচি আইভি (Apache Ivy) ডিপেনডেন্সি ম্যানেজমেন্টের জন্য একটি গুরুত্বপূর্ণ টুল যা ডিপেনডেন্সি ক্যাশিং ব্যবস্থাপনা প্রদান করে। ক্যাশিং হল সেই প্রক্রিয়া, যেখানে আইভি ডাউনলোড করা ডিপেনডেন্সি গুলো স্থানীয়ভাবে সংরক্ষণ করে, যাতে পরবর্তী সময়ে পুনরায় ডাউনলোড করার প্রয়োজন না হয়। এটি বিল্ড প্রক্রিয়া দ্রুত করে এবং নেটওয়ার্ক ব্যান্ডউইথ সাশ্রয়ী করে। IVY Cache হলো সেই স্থান যেখানে আইভি ডিপেনডেন্সি গুলো ক্যাশ (সংরক্ষিত) করে রাখে।
IVY Cache হল একটি লোকাল ক্যাশ ডিরেক্টরি যেখানে আইভি ডিপেনডেন্সি গুলো সংরক্ষিত থাকে। এই ক্যাশটি আইভি যখন একটি ডিপেনডেন্সি ডাউনলোড করে, তখন সেটি ভবিষ্যতে ব্যবহার করার জন্য সংরক্ষণ করে রাখে। এর ফলে পরবর্তী সময়ে একই ডিপেনডেন্সি আবার ডাউনলোড করতে হয় না, যা বিল্ডের গতিকে আরও দ্রুত করে।
আইভি ডিফল্টভাবে ক্যাশে ডিপেনডেন্সি সংরক্ষণ করে ${user.home}/.ivy2/cache/
ডিরেক্টরিতে, তবে আপনি এটি কাস্টমাইজ করতে পারেন।
আইভি ক্যাশের কনফিগারেশন সাধারণত ivysettings.xml ফাইলে করা হয়। আপনি ক্যাশের অবস্থান, আর্কাইভিং, এবং ক্যাশ ম্যানেজমেন্ট সংক্রান্ত নানাবিধ সেটিংস কাস্টমাইজ করতে পারেন।
<ivysettings>
<cache name="default-cache" path="${user.home}/.ivy2/cache"/>
<!-- Define repositories -->
<repositories>
<repository name="central" url="https://repo1.maven.org/maven2"/>
</repositories>
</ivysettings>
এখানে:
default-cache
এবং এটি path
অ্যাট্রিবিউটের মাধ্যমে লোকাল ক্যাশের অবস্থান নির্ধারণ করা হয়েছে।${user.home}/.ivy2/cache
ডিরেক্টরি। এটি আইভির লোকাল ক্যাশের ডিফল্ট অবস্থান।আপনি যদি ক্যাশের ডিরেক্টরি কাস্টমাইজ করতে চান, তবে path
অ্যাট্রিবিউট ব্যবহার করে নতুন লোকাল ডিরেক্টরি নির্ধারণ করতে পারেন:
<ivysettings>
<cache name="my-cache" path="path/to/your/custom/cache"/>
</ivysettings>
এটি ক্যাশের অবস্থানকে path/to/your/custom/cache
ডিরেক্টরিতে পরিবর্তন করবে।
আইভি ক্যাশে ডিপেনডেন্সি সংরক্ষণ করার সময় আর্কাইভ ফাইল তৈরি করে থাকে। এটি ডিপেনডেন্সির ভার্সন, আর্কাইভ ফাইল নাম এবং ফাইল টাইপের ভিত্তিতে তৈরি হয়। আপনি এই ক্যাশ আর্কাইভিংয়ের প্যাটার্ন কনফিগার করতে পারেন।
<ivysettings>
<cache name="default-cache" path="${user.home}/.ivy2/cache">
<artifact pattern="[organisation]/[module]/[revision]/[artifact]-[revision](-[classifier]).[ext]"/>
</cache>
</ivysettings>
এখানে:
[organisation]/[module]/[revision]/[artifact]-[revision](-[classifier]).[ext]
।আইভি ক্যাশে পুরানো বা অপ্রয়োজনীয় ডিপেনডেন্সি ফাইলগুলো পরিষ্কার করতে, আপনি ক্যাশ পরিষ্কার করার টাস্ক ব্যবহার করতে পারেন। এটি বিল্ড স্ক্রিপ্টে অন্তর্ভুক্ত করা যায়:
<target name="clean-cache">
<delete dir="${user.home}/.ivy2/cache"/>
</target>
এটি .ivy2/cache
ডিরেক্টরির সব ডিপেনডেন্সি মুছে ফেলবে এবং ক্যাশ পরিষ্কার করবে।
IVY Cache Configuration আইভি ব্যবহারকারীদের জন্য ডিপেনডেন্সি ম্যানেজমেন্টকে আরো কার্যকরী করে তোলে, কারণ এটি ক্যাশিং এবং কাস্টমাইজেশনের মাধ্যমে বিল্ড প্রক্রিয়াকে দ্রুত, সাশ্রয়ী এবং নির্ভরযোগ্য করে তোলে।
common.read_more