Apache Ivy একটি অত্যন্ত শক্তিশালী dependency management টুল যা Java প্রোজেক্টে বাইরের লাইব্রেরি বা ডিপেন্ডেন্সি সহজে ম্যানেজ করতে সহায়তা করে। Ivy দিয়ে আপনি আপনার প্রোজেক্টে dependencies এবং publications কিভাবে ডিফাইন করবেন তা ব্যাখ্যা করা হবে।
Dependencies হল সেই লাইব্রেরি বা ফাইলগুলি যা আপনার প্রোজেক্টের কাজের জন্য প্রয়োজন। Ivy-এ ডিপেন্ডেন্সি ডিফাইন করতে আপনি ivy.xml
ফাইল ব্যবহার করেন।
Dependencies ডিফাইন করার সময়:
<ivy-module version="2.0">
<info organisation="com.example" module="my-app" />
<dependencies>
<!-- External 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>
এখানে:
<info>
ট্যাগের মাধ্যমে আপনার প্রোজেক্টের organisation (গ্রুপ) এবং module (মডিউল) নাম দেওয়া হয়েছে।<dependencies>
ট্যাগের মধ্যে আপনার প্রোজেক্টের dependencies ডিফাইন করা হয়েছে, যেমন commons-lang3
এবং JUnit।org
: লাইব্রেরির গ্রুপ বা অর্গানাইজেশন।name
: লাইব্রেরির নাম।rev
: লাইব্রেরির সংস্করণ।যখন আপনি একটি লাইব্রেরি ব্যবহার করেন, সেই লাইব্রেরির নিজস্ব ডিপেন্ডেন্সি থাকতে পারে। Ivy এই ডিপেন্ডেন্সি গুলিকেও স্বয়ংক্রিয়ভাবে ডাউনলোড করে, এদের transitive dependencies বলা হয়।
ধরা যাক, commons-lang3 লাইব্রেরিটি commons-collections লাইব্রেরির উপর নির্ভরশীল। তাহলে Ivy এই লাইব্রেরিটিকেও ডাউনলোড করবে যখন আপনি commons-lang3 ডাউনলোড করবেন।
<dependencies>
<dependency org="org.apache.commons" name="commons-lang3" rev="3.12.0"/>
</dependencies>
এখানে:
commons-lang3
এর ডিপেন্ডেন্সির মধ্যে commons-collections স্বয়ংক্রিয়ভাবে ডাউনলোড হবে।যখন দুটি বা তার বেশি ডিপেন্ডেন্সি একই লাইব্রেরির ভিন্ন সংস্করণে নির্ভরশীল থাকে, তখন Ivy স্বয়ংক্রিয়ভাবে একটি সংস্করণ নির্বাচন করে। আপনি চাইলে Ivy কে version conflict হ্যান্ডল করার জন্য কনফিগারও করতে পারেন।
উদাহরণ:
<dependencies>
<dependency org="org.apache.commons" name="commons-lang3" rev="3.12.0"/>
<dependency org="org.apache.commons" name="commons-lang3" rev="3.10.0"/>
</dependencies>
এখানে:
commons-lang3
এর দুটি ভিন্ন সংস্করণে নির্ভরশীল হয়, তবে Ivy সর্বশেষ সংস্করণ (যেমন 3.12.0) রেজলভ করবে।Publications হল সেই ফাইল বা আর্টিফ্যাক্টগুলি যা আপনার প্রোজেক্ট তৈরি করবে এবং অন্যদের জন্য উপলব্ধ হবে (যেমন লাইব্রেরি)। যখন আপনি একটি লাইব্রেরি তৈরি করেন বা প্রকাশ করেন, তখন সেই লাইব্রেরি Ivy রিপোজিটরিতে পাবলিশ হয় এবং অন্যান্য প্রোজেক্ট সেটি ব্যবহার করতে পারে।
Ivy-এ পাবলিকেশন ডিফাইন করার জন্য ivy.xml
ফাইলের মধ্যে <publications>
ট্যাগ ব্যবহার করা হয়। এটি সাধারণত JAR, WAR, EAR, অথবা অন্য কোনো আর্কাইভ ফাইল হবে।
<ivy-module version="2.0">
<info organisation="com.example" module="my-app"/>
<publications>
<artifact name="my-app" type="jar" ext="jar"/>
</publications>
</ivy-module>
এখানে:
<publications>
ট্যাগের মাধ্যমে আপনি যে ফাইলটি পাবলিশ করতে চান সেটি নির্ধারণ করা হয়েছে। এখানে my-app.jar
ফাইলটি পাবলিশ করা হবে।my-app
বা commons-lang3
)jar
, war
).jar
)আপনার প্রোজেক্টের artifact পাবলিশ করার পর, আপনি এই artifact অন্য কোনো প্রোজেক্টে ব্যবহার করতে পারেন। Ivy লাইব্রেরি বা artifact ডাউনলোড করার জন্য ivy:retrieve
টাস্ক ব্যবহার করে।
<target name="publish">
<ivy:publish/>
</target>
<target name="retrieve">
<ivy:retrieve/>
</target>
ivy:publish
টাস্কটি artifact রিপোজিটরিতে পাবলিশ করবে।ivy:retrieve
টাস্কটি artifact রিপোজিটরি থেকে ডাউনলোড করবে।আপনি যদি নিজের Ivy রিপোজিটরি ব্যবহার করতে চান, তবে সেটি কনফিগার করতে পারেন।
<repositories>
<repository name="central" url="https://repo.maven.apache.org/maven2"/>
<repository name="private-repo" url="https://my-private-repo.com/ivy"/>
</repositories>
এখানে:
<repository>
ট্যাগটি রিপোজিটরি URL এবং নাম নির্দেশ করে, যেখানে থেকে Ivy লাইব্রেরি ডাউনলোড বা আপলোড করবে।Apache Ivy একটি শক্তিশালী টুল যা Java প্রোজেক্টে ডিপেন্ডেন্সি ম্যানেজমেন্টে সহায়তা করে। Dependencies এবং Publications হল Ivy এর মূল ধারণা:
এছাড়াও, Ivy ডিপেন্ডেন্সির রেজলভেশন, ভার্সন ম্যানেজমেন্ট, ট্রান্সিটিভ ডিপেন্ডেন্সি এবং কাস্টম রিপোজিটরি সাপোর্ট প্রদান করে। Ivy-এর মাধ্যমে আপনি লাইব্রেরি ম্যানেজমেন্টকে আরো সহজ এবং কার্যকরী করতে পারবেন।
common.read_more