অ্যাপাচি আইভি (Apache Ivy) একটি শক্তিশালী ডিপেন্ডেন্সি ম্যানেজমেন্ট টুল যা মূলত জাভা প্রোজেক্টে ডিপেন্ডেন্সি ম্যানেজমেন্ট সহজ করতে ব্যবহৃত হয়। IVY Retrieve এবং Publish Task দুটি গুরুত্বপূর্ণ টাস্ক, যা ডিপেন্ডেন্সি সংগ্রহ এবং লাইব্রেরি রিপোজিটরিতে পাবলিশ করার জন্য ব্যবহৃত হয়।
IVY Retrieve টাস্কটি অ্যাপাচি আইভির মাধ্যমে ডিপেন্ডেন্সি সংগ্রহের জন্য ব্যবহৃত হয়। এটি প্রোজেক্টের ivy.xml ফাইল থেকে ডিপেন্ডেন্সিগুলির তথ্য নিয়ে এবং নির্দিষ্ট রিপোজিটরি থেকে লাইব্রেরি বা ডিপেন্ডেন্সি ডাউনলোড করে সেগুলো প্রোজেক্টে যোগ করে। সাধারণত, এটি তখন ব্যবহৃত হয় যখন আপনি ডিপেন্ডেন্সি রেজোলিউশন শেষে লাইব্রেরি আপনার প্রোজেক্টে প্রয়োজন অনুযায়ী সঠিকভাবে রিট্রিভ বা ডাউনলোড করতে চান।
<project name="IvyRetrieveExample" default="retrieveDependencies">
<target name="retrieveDependencies">
<!-- Retrieve dependencies as defined in ivy.xml -->
<ivy:retrieve/>
</target>
</project>
এখানে:
lib/
ডিরেক্টরিতে সেগুলো রাখে।pattern
অ্যাট্রিবিউট ব্যবহার করে ডিপেন্ডেন্সি ফাইলগুলোর নামকরণ কাস্টমাইজ করা যায়।<ivy:retrieve pattern="lib/[artifact]-[revision].jar"/>
এটি ডিপেন্ডেন্সি ফাইলের নামের প্যাটার্ন পরিবর্তন করে, যাতে ফাইলের নাম যেমন artifact-revision.jar হিসেবে ডাউনলোড করা হয়।
integration
, release
ইত্যাদি)।<ivy:retrieve status="release"/>
এটি শুধুমাত্র release
স্ট্যাটাসের ডিপেন্ডেন্সি ডাউনলোড করবে।
IVY Publish টাস্কটি একটি প্রোজেক্টের ডিপেন্ডেন্সি বা লাইব্রেরি এক্সপোজ করতে ব্যবহৃত হয়। যখন আপনি নিজে একটি লাইব্রেরি তৈরি করেন এবং সেটি শেয়ার করতে চান, তখন Publish Task ব্যবহার করে সেই লাইব্রেরি একটি রিপোজিটরিতে পুশ করা হয়। এটি সাধারণত প্রাইভেট রিপোজিটরিতে বা পাবলিক রিপোজিটরিতে একটি লাইব্রেরি আপলোড করতে ব্যবহৃত হয়, যাতে অন্য প্রোজেক্টগুলো সেই লাইব্রেরি ব্যবহার করতে পারে।
<project name="IvyPublishExample" default="publishLibrary">
<target name="publishLibrary">
<!-- Publish the artifact to the repository -->
<ivy:publish/>
</target>
</project>
এখানে:
<ivy:publish repo="path/to/repository"/>
এটি লাইব্রেরি বা ডিপেন্ডেন্সি নির্দিষ্ট repo বা repository তে পুশ করবে।
<ivy:publish pattern="repository/[organisation]/[module]/[revision]/[artifact].[ext]"/>
এটি লাইব্রেরি ফাইলের পাথ কাস্টমাইজ করে, যেখানে লাইব্রেরি নির্দিষ্ট পাথ অনুযায়ী পুশ হবে।
ধরা যাক, আপনি একটি জাভা প্রোজেক্টে commons-lang3 লাইব্রেরি ব্যবহার করতে চান, এবং এটি ডাউনলোড করতে চান। ivy.xml ফাইলের মাধ্যমে আপনি ivy:retrieve টাস্ক ব্যবহার করবেন।
<ivy-module version="2.0">
<info organisation="com.example" module="myapp" revision="1.0"/>
<repositories>
<repository name="maven-central" url="https://repo.maven.apache.org/maven2"/>
</repositories>
<dependencies>
<dependency org="org.apache.commons" name="commons-lang3" rev="3.9"/>
</dependencies>
</ivy-module>
এখানে:
আপনি যদি আপনার প্রোজেক্টের লাইব্রেরি অন্যদের জন্য পাবলিশ করতে চান, তবে আপনি ivy:publish টাস্ক ব্যবহার করতে পারেন। উদাহরণস্বরূপ, একটি লাইব্রেরি বা অ্যাপ্লিকেশন আপনার প্রাইভেট রিপোজিটরিতে পুশ করতে পারেন।
<ivy-module version="2.0">
<info organisation="com.example" module="myapp" revision="1.0"/>
<repositories>
<repository name="my-private-repo" url="file:///path/to/private/repository"/>
</repositories>
<artifacts>
<artifact name="myapp" type="jar" ext="jar"/>
</artifacts>
<publish repo="file:///path/to/private/repository"/>
</ivy-module>
এখানে:
IVY Retrieve এবং Publish Task অ্যাপাচি আইভির অত্যন্ত গুরুত্বপূর্ণ টাস্ক যা ডিপেন্ডেন্সি সংগ্রহ এবং লাইব্রেরি শেয়ারিংয়ের জন্য ব্যবহৃত হয়। IVY Retrieve টাস্কটি ডিপেন্ডেন্সি ডাউনলোড এবং প্রকল্পে যুক্ত করার জন্য ব্যবহৃত হয়, এবং Publish Task একটি লাইব্রেরি বা ডিপেন্ডেন্সি অন্যদের শেয়ার করতে ব্যবহৃত হয়। এই টাস্কগুলো ডিপেন্ডেন্সি ম্যানেজমেন্ট প্রক্রিয়াকে সহজ, কার্যকর, এবং অটোমেটেড করে তোলে।
অ্যাপাচি আইভি (Apache Ivy) একটি শক্তিশালী ডিপেনডেন্সি ম্যানেজমেন্ট টুল যা জাভা প্রোজেক্টগুলোর জন্য ব্যবহৃত হয়। Ivy Task ব্যবহার করে আপনি খুব সহজেই প্রোজেক্টের জন্য প্রয়োজনীয় ডিপেনডেন্সি গুলি রিট্রিভ (retrieve) করতে পারেন। এই টাস্কটি ব্যবহার করে আপনি আইভির মাধ্যমে নির্দিষ্ট রেপোজিটরি থেকে ডিপেনডেন্সি গুলি ডাউনলোড এবং লোকাল ক্যাশে সংরক্ষণ করতে পারবেন।
Ivy Task হল অ্যাপাচি আইভির একটি বিল্ট-ইন টাস্ক যা ডিপেনডেন্সি রিট্রিভ করার জন্য ব্যবহৃত হয়। এটি সাধারণত অ্যাপাচি অ্যান্ট (Apache Ant) বিল্ড টুলের সাথে ব্যবহৃত হয় এবং এটি ডিপেনডেন্সি গুলো নির্দিষ্ট রেপোজিটরি থেকে ডাউনলোড করে প্রোজেক্টের বিল্ড ডিরেক্টরিতে সংগ্রহ করে।
<target name="retrieve-dependencies">
<ivy:retrieve/>
</target>
এখানে, <ivy:retrieve/>
টাস্কটি ডিপেনডেন্সি গুলো নির্দিষ্ট কনফিগারেশন অনুসারে রিট্রিভ করবে।
আইভির ডিপেনডেন্সি রিট্রিভ করতে প্রথমে আপনাকে ivy.xml ফাইল তৈরি করতে হবে, যেখানে আপনি প্রোজেক্টের ডিপেনডেন্সি গুলি উল্লেখ করবেন। উদাহরণস্বরূপ:
<ivy-module version="2.0">
<info organisation="com.example" module="myproject"/>
<dependencies>
<dependency org="org.springframework" name="spring-core" rev="5.2.8.RELEASE"/>
<dependency org="com.google.guava" name="guava" rev="30.0-jre"/>
</dependencies>
</ivy-module>
এখানে, org.springframework
এবং com.google.guava
এর ডিপেনডেন্সি গুলি উল্লেখ করা হয়েছে।
আপনাকে ivysettings.xml ফাইলেও রেপোজিটরি এবং ক্যাশ কনফিগারেশন নির্ধারণ করতে হবে:
<ivysettings>
<repositories>
<repository name="central" url="https://repo1.maven.org/maven2"/>
</repositories>
<cache name="default-cache" path="${user.home}/.ivy2/cache"/>
</ivysettings>
এখানে, https://repo1.maven.org/maven2
URL থেকে ডিপেনডেন্সি সংগ্রহ করা হবে এবং ক্যাশ ডিরেক্টরি হিসেবে ~/.ivy2/cache
ব্যবহার করা হবে।
<target name="retrieve-dependencies">
<ivy:retrieve/>
</target>
এটি ivy.xml ফাইলের ডিপেনডেন্সি গুলি রিট্রিভ করবে এবং এগুলিকে লোকাল ক্যাশে এবং বিল্ড ডিরেক্টরিতে সংরক্ষণ করবে।
আপনি যদি ডিপেনডেন্সির ফাইলগুলো কোন নির্দিষ্ট ডিরেক্টরিতে রাখতে চান, তাহলে retrieve
টাস্কে pattern
অ্যাট্রিবিউট ব্যবহার করে প্যাটার্ন কাস্টমাইজ করতে পারেন:
<target name="retrieve-dependencies">
<ivy:retrieve pattern="libs/[artifact]-[revision](-[classifier]).[ext]"/>
</target>
এখানে, ডিপেনডেন্সির আর্কাইভ ফাইলগুলি libs/
ডিরেক্টরিতে [artifact]-[revision]
প্যাটার্ন অনুসারে রিট্রিভ হবে।
আপনি যদি শুধুমাত্র নির্দিষ্ট একটি ডিপেনডেন্সি রিট্রিভ করতে চান, তবে retrieve
টাস্কে only
অ্যাট্রিবিউট ব্যবহার করতে পারেন:
<target name="retrieve-single-dependency">
<ivy:retrieve only="org.springframework:spring-core"/>
</target>
এটি শুধুমাত্র spring-core
ডিপেনডেন্সি রিট্রিভ করবে।
override: যদি আপনার লোকাল ক্যাশে একই ডিপেনডেন্সি পূর্বে ডাউনলোড হয়ে থাকে, এবং আপনি সেটি আবার ডাউনলোড করতে চান, তবে override
অ্যাট্রিবিউট ব্যবহার করে আপনি এটি নির্ধারণ করতে পারবেন। উদাহরণ:
<ivy:retrieve override="true"/>
confs: ডিপেনডেন্সি রিট্রিভ করার জন্য আপনি নির্দিষ্ট কনফিগারেশন চিহ্নিত করতে পারেন, যেমন compile
, runtime
, test
ইত্যাদি।
<ivy:retrieve conf="compile"/>
useOrigin: এটি মূল ডিপেনডেন্সির ফাইলের নাম ব্যবহার করতে পারে:
<ivy:retrieve useOrigin="true"/>
Ivy Task ডিপেনডেন্সি ম্যানেজমেন্ট প্রক্রিয়াকে সহজ এবং দ্রুত করতে সাহায্য করে, এবং এটি অ্যাপাচি অ্যান্টের সাথে একত্রে ব্যবহৃত হলে প্রোজেক্ট বিল্ডিং এবং ডিপেনডেন্সি রিট্রিভালের জন্য একটি শক্তিশালী টুল হয়ে ওঠে।
অ্যাপাচি আইভি (Apache Ivy) একটি ডিপেনডেন্সি ম্যানেজমেন্ট টুল, যা ডিপেনডেন্সি রেজলভেশন এবং ম্যানেজমেন্ট সহজ করে তোলে। retrieve
টাস্কটি আইভির অন্যতম গুরুত্বপূর্ণ টাস্ক, যা ডিপেনডেন্সি ফাইলগুলিকে নির্দিষ্ট গন্তব্যে ডাউনলোড বা রিট্রিভ করতে ব্যবহৃত হয়। এটি বিভিন্ন অপশন সহ আসে, যা ডিপেনডেন্সি ফাইল সংগ্রহের প্রক্রিয়াকে কাস্টমাইজ করতে সহায়তা করে।
নিচে retrieve
টাস্কের বিভিন্ন অপশন এবং তাদের ব্যবহার আলোচনা করা হলো।
retrieve
টাস্কের সাধারণ সিঙ্কসেট (Syntax)<ivy:retrieve [attributes] />
এখানে, attributes
হল অপশনগুলির তালিকা যা আপনি retrieve
টাস্কে ব্যবহার করতে পারেন।
retrieve
টাস্কের বিভিন্ন অপশনpattern
– ডাউনলোডের পাথ কনফিগারেশনpattern
অপশনটি ব্যবহার করে আপনি নির্দিষ্ট করতে পারেন কোথায় ডিপেনডেন্সি ফাইলগুলি ডাউনলোড হবে। এটি একটি পাথ প্যাটার্ন যা ফাইলের অবস্থান নির্ধারণ করে। এটি বেশিরভাগ সময় lib/[artifact]-[revision].[ext]
ধরনের প্যাটার্ন হয়।
<ivy:retrieve pattern="lib/[artifact]-[revision].[ext]"/>
এখানে, [artifact]
, [revision]
, এবং [ext]
হল আইভি দ্বারা স্বয়ংক্রিয়ভাবে প্রতিস্থাপিত ভেরিয়েবল। [artifact]
হল লাইব্রেরির নাম, [revision]
হল ভার্সন, এবং [ext]
হল ফাইলের এক্সটেনশন (যেমন .jar
বা .pom
)।
basedir
– বেস ডিরেক্টরি নির্ধারণbasedir
অপশনটি ব্যবহার করে আপনি ডিপেনডেন্সি ফাইলগুলো কোথায় ডাউনলোড হবে তা নির্দিষ্ট করতে পারেন। এটি আপনার প্রোজেক্টের ডিরেক্টরি হতে পারে।
<ivy:retrieve basedir="libs"/>
এখানে, libs
ফোল্ডারে ডিপেনডেন্সি ফাইলগুলি ডাউনলোড হবে।
retrievePatterns
– একাধিক প্যাটার্ন ব্যবহারআপনি একাধিক ডাউনলোড প্যাটার্ন কনফিগার করতে retrievePatterns
অপশন ব্যবহার করতে পারেন। এটি একাধিক ডিরেক্টরি এবং ফাইল প্যাটার্নে ডিপেনডেন্সি ফাইল সংগ্রহ করতে সাহায্য করে।
<ivy:retrieve retrievePatterns="lib/[artifact]/[artifact]-[revision].jar, lib/[artifact]-[revision].jar"/>
এখানে, একই লাইব্রেরি দুটি ভিন্ন প্যাটার্নে ডাউনলোড করা হবে।
confs
– নির্দিষ্ট কনফিগারেশন নির্বাচনconfs
অপশনটি ব্যবহার করে আপনি নির্দিষ্ট কনফিগারেশন (যেমন compile
, runtime
, বা test
) থেকে ডিপেনডেন্সি রিট্রিভ করতে পারেন। এই অপশনটি একাধিক কনফিগারেশন গ্রহণ করতে পারে।
<ivy:retrieve confs="compile, runtime"/>
এখানে, compile
এবং runtime
কনফিগারেশন থেকে ডিপেনডেন্সি ফাইলগুলি ডাউনলোড হবে।
exclude
– নির্দিষ্ট ডিপেনডেন্সি বাদ দেওয়াexclude
অপশনটি ব্যবহার করে আপনি কোনো নির্দিষ্ট ডিপেনডেন্সি বাদ দিতে পারেন। উদাহরণস্বরূপ, যদি আপনি একটি লাইব্রেরি বা ভার্সন বাদ দিতে চান, তাহলে এটি ব্যবহার করবেন।
<ivy:retrieve exclude="org.apache.commons:commons-lang3"/>
এখানে, commons-lang3
লাইব্রেরি ডাউনলোড হতে বাদ যাবে।
overwrite
– পূর্ববর্তী ডিপেনডেন্সি ওভাররাইট করাoverwrite
অপশনটি ব্যবহার করে আপনি আগের ডাউনলোড করা ফাইলগুলোকে নতুন ডাউনলোড ফাইল দিয়ে ওভাররাইট করতে পারবেন। ডিফল্টভাবে এটি false
থাকে, যার মানে হল যে পুরনো ফাইলগুলো রিট্রিভ করা হবে না।
<ivy:retrieve overwrite="true"/>
এখানে, আগের ডাউনলোড করা ফাইলগুলো নতুন ডিপেনডেন্সি দিয়ে ওভাররাইট হবে।
artifact
– নির্দিষ্ট আর্টিফ্যাক্ট রিট্রিভ করাএই অপশনটি ব্যবহার করে আপনি নির্দিষ্ট আর্টিফ্যাক্ট (যেমন .jar
, .pom
ফাইল) রিট্রিভ করতে পারবেন। এটি ডিপেনডেন্সি ফাইলের এক্সটেনশন নির্দিষ্ট করে।
<ivy:retrieve artifact="jar"/>
এখানে, শুধুমাত্র .jar
ফাইলটি ডাউনলোড হবে।
branch
– শাখা নির্দিষ্ট করাbranch
অপশনটি ব্যবহার করে আপনি নির্দিষ্ট শাখার (branch) ডিপেনডেন্সি রিট্রিভ করতে পারেন। এটি সাধারণত ivy.xml
ফাইলে ডিফাইন করা হয়।
<ivy:retrieve branch="release"/>
এখানে, release
শাখার ডিপেনডেন্সি রিট্রিভ করা হবে।
একটি পূর্ণাঙ্গ উদাহরণ, যেখানে বিভিন্ন অপশন ব্যবহার করা হয়েছে:
<ivy:retrieve pattern="libs/[artifact]-[revision].[ext]" basedir="downloads" confs="compile, runtime" overwrite="true"/>
এখানে:
libs/
ডিরেক্টরিতে [artifact]-[revision].[ext]
প্যাটার্ন অনুযায়ী ডাউনলোড হবে।compile
এবং runtime
কনফিগারেশন থেকে ডিপেনডেন্সি রিট্রিভ করা হবে।অ্যাপাচি আইভি retrieve
টাস্কের মাধ্যমে ডিপেনডেন্সি ফাইলগুলো ডাউনলোড এবং ম্যানেজ করার কার্যক্রম সহজ করে তোলে। এটি বিভিন্ন অপশন যেমন pattern
, basedir
, confs
, exclude
, overwrite
, ইত্যাদি সাপোর্ট করে, যা ডিপেনডেন্সি সংগ্রহের প্রক্রিয়াকে কাস্টমাইজ এবং অপ্টিমাইজ করতে সহায়তা করে। retrieve
টাস্কের সাহায্যে আপনি আপনার প্রোজেক্টের লাইব্রেরি ম্যানেজমেন্ট এবং ডিপেনডেন্সি রেজলভেশন সহজে পরিচালনা করতে পারেন।
Apache Ivy একটি ডিপেনডেন্সি ম্যানেজমেন্ট টুল যা Apache Ant এর সাথে ব্যবহৃত হয়। Ivy আপনার প্রোজেক্টের ডিপেনডেন্সি রেজোলিউশন এবং লাইব্রেরি ম্যানেজমেন্টে সহায়তা করে, এবং এটি আপনাকে module publication (মডিউল প্রকাশ) কনফিগার করতে সাহায্য করে। মডিউল প্রকাশের মাধ্যমে আপনি আপনার লাইব্রেরি বা ডিপেনডেন্সি সঠিকভাবে একটি রেপোজিটরিতে প্রকাশ করতে পারেন, যাতে তা অন্য প্রোজেক্ট বা ডেভেলপারদের জন্য উপলব্ধ থাকে।
এই নিবন্ধে আমরা Ivy Task এর মাধ্যমে Module Publication কনফিগার করতে শিখব।
Module Publication হল একটি প্রক্রিয়া যার মাধ্যমে আপনি একটি প্রোজেক্ট বা লাইব্রেরি (মডিউল) একটি রেপোজিটরিতে প্রকাশ করেন। Ivy আপনাকে এটি Maven অথবা Ivy রেপোজিটরিতে বা আপনার কাস্টম রেপোজিটরিতে করতে সাহায্য করে। যখন আপনি একটি মডিউল প্রকাশ করেন, তখন সেটি ডিপেনডেন্সি হিসেবে অন্য প্রোজেক্টে ব্যবহারযোগ্য হয়ে ওঠে।
Ivy আপনাকে publish টাস্ক ব্যবহার করে একটি মডিউল প্রকাশ করতে সাহায্য করে, যা নির্দিষ্ট রেপোজিটরিতে (লোকাল বা রিমোট) আপনার লাইব্রেরি বা মডিউল আপলোড করবে।
Ivy Task এর মাধ্যমে Module Publication কনফিগার করার জন্য আপনাকে ivy:publish
টাস্ক ব্যবহার করতে হবে। এই টাস্কটি ivy.xml ফাইল থেকে আপনার মডিউল এবং এর অ্যাট্রিবিউটস (যেমন: নাম, ভার্সন) নিয়ে রেপোজিটরিতে প্রকাশ করবে।
<project name="myapp" default="publish" basedir=".">
<!-- Define Ivy task for publishing -->
<taskdef name="ivy" classname="org.apache.ivy.ant.IvyTask"/>
<!-- Publish module to the repository -->
<target name="publish">
<ivy:publish organisation="com.example" module="myapp" revision="1.0.0">
<ivy:artifact name="myapp" type="jar" ext="jar" basedir="build/classes"/>
</ivy:publish>
</target>
</project>
এখানে:
ivy:publish
: এটি Ivy টাস্ক যা মডিউল বা লাইব্রেরি রেপোজিটরিতে প্রকাশ করার জন্য ব্যবহৃত হয়।organisation
: আপনার প্রোজেক্টের সংস্থার নাম।module
: আপনার মডিউল বা প্রোজেক্টের নাম।revision
: মডিউলের সংস্করণ (যেমন, 1.0.0
)।ivy:artifact
: এটি artifact প্রকাশ করে, যেমন JAR ফাইল বা অন্য কোনো ফাইল টাইপ।basedir
: যে ডিরেক্টরিতে ফাইলটি অবস্থান করছে (এখানে build/classes
ডিরেক্টরি থেকে ফাইলটি প্রকাশ করা হবে)।jar
, war
, ear
)।jar
বা war
)।Ivy-তে publish কনফিগার করার সময় আপনাকে ivysettings.xml
ফাইলও কনফিগার করতে হতে পারে যাতে আপনি রেপোজিটরি সেটিংস এবং লোকেশন নির্ধারণ করতে পারেন।
<ivysettings>
<!-- Define resolver for publishing -->
<resolvers>
<!-- Publish to Maven Repository -->
<ibiblio name="central" root="https://repo1.maven.org/maven2/" />
</resolvers>
<!-- Define cache location -->
<cachemanager default="defaultCache"/>
</ivysettings>
এখানে:
<resolvers>
: রেপোজিটরি বা রেজোলিউশন কনফিগারেশন যেখানে আপনি প্রকাশ করবেন। এখানে Maven Central রেপোজিটরি ব্যবহার করা হয়েছে।<cachemanager>
: ক্যাশে ম্যানেজার সেটিংস, যা ডিপেনডেন্সি ক্যাশিং কনফিগার করে।আপনার publish টাস্কের জন্য সাধারণত দুটি ফাইল ব্যবহৃত হয়:
এই দুটি ফাইলের মাধ্যমে Ivy আপনার মডিউল প্রকাশ এবং রেপোজিটরিতে সংরক্ষণ করতে সক্ষম হয়।
ivy.xml
<?xml version="1.0" encoding="UTF-8"?>
<ivy-module version="2.0">
<info organisation="com.example" module="myapp" revision="1.0.0"/>
<dependencies>
<dependency org="org.apache.commons" name="commons-lang3" rev="3.12.0"/>
</dependencies>
</ivy-module>
ivysettings.xml
<ivysettings>
<resolvers>
<ibiblio name="central" root="https://repo1.maven.org/maven2/"/>
</resolvers>
</ivysettings>
আপনি যদি Ivy টাস্কের মাধ্যমে মডিউল প্রকাশ করতে চান, তাহলে Ant দিয়ে এটি রান করতে হবে। আপনি নিম্নলিখিত কমান্ডটি ব্যবহার করে মডিউল প্রকাশ করতে পারেন:
ant publish
এই কমান্ডটি publish
টার্গেট এক্সিকিউট করবে এবং আপনার মডিউলটি রেপোজিটরিতে প্রকাশ করবে।
Apache Ivy-এর ivy:publish
টাস্ক আপনাকে আপনার মডিউল বা লাইব্রেরি রেপোজিটরিতে প্রকাশ করতে সহায়তা করে। এটি আপনাকে Maven বা Ivy রেপোজিটরিতে আপনার মডিউল আপলোড করার অনুমতি দেয়। Ivysettings.xml এবং ivy.xml ফাইলের মাধ্যমে আপনি রেপোজিটরি, ক্যাশে, এবং ডিপেনডেন্সি রেজোলিউশন কনফিগার করতে পারেন। Ivy দিয়ে module publication এর মাধ্যমে আপনার প্রোজেক্টের লাইব্রেরি বা মডিউল অন্য ডেভেলপারদের জন্য উপলব্ধ করা হয়।
Apache Ivy একটি শক্তিশালী ডিপেন্ডেন্সি ম্যানেজমেন্ট টুল যা আপনাকে local এবং remote রিপোজিটরি ব্যবহারের মাধ্যমে লাইব্রেরি বা মডিউল publish করতে সাহায্য করে। Publish মানে হল, আপনার তৈরি করা বা প্রোজেক্টে ব্যবহৃত লাইব্রেরি বা মডিউলটিকে একটি নির্দিষ্ট রিপোজিটরিতে আপলোড করা, যাতে অন্য ডেভেলপাররা বা প্রোজেক্টগুলো সেটি ব্যবহার করতে পারে।
একটি local repository হলো আপনার সিস্টেমে বা লোকাল সার্ভারে সংরক্ষিত রিপোজিটরি, যেখানে আপনার প্রোজেক্টের লাইব্রেরি বা মডিউলটি সংরক্ষণ করা হয়। এটি সাধারণত ডেভেলপারদের জন্য ব্যবহৃত হয় যখন তারা নতুন বা কাস্টম লাইব্রেরি তৈরি করে এবং সেটি আপলোড করতে চায়।
প্রথমে, একটি ivy.xml ফাইল তৈরি করুন যেখানে আপনি মডিউলটি ডিফাইন করবেন এবং রিপোজিটরি নির্ধারণ করবেন।
<ivy-module version="2.0">
<info organisation="com.example" module="my-module" revision="1.0.0" />
<publications>
<artifact name="my-module" type="jar" ext="jar" />
</publications>
</ivy-module>
এখানে:
<info>
ট্যাগে মডিউল এবং সংস্করণ (revision) নির্ধারণ করা হয়েছে।<publications>
ট্যাগে artifact
প্রকাশিত হবে, যা JAR ফাইল হিসেবে নির্ধারণ করা হয়েছে।Ivy তে local repository তে মডিউল পাবলিশ করার জন্য আপনাকে ivysettings.xml ফাইল কনফিগার করতে হবে। এই ফাইলে আপনি local repository এর পাথ নির্ধারণ করবেন।
<ivysettings>
<repositories>
<repository name="local" url="file://${user.home}/.ivy2/local" />
</repositories>
<resolvers>
<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>
</ivysettings>
এখানে:
<repository>
ট্যাগে local repository এর লোকেশন নির্ধারণ করা হয়েছে। এটি আপনার সিস্টেমের ${user.home}/.ivy2/local
ফোল্ডারে সংরক্ষিত হবে।<resolver>
ট্যাগে FileSystemResolver ব্যবহার করা হয়েছে, যা ফাইল সিস্টেম থেকে লাইব্রেরি রেজলভ করবে।এখন, Ant বিল্ড স্ক্রিপ্টে Ivy টাস্ক ব্যবহার করে মডিউলটি লোকাল রিপোজিটরিতে প্রকাশ (publish) করুন।
<project name="IvyPublishExample" default="publish" basedir=".">
<taskdef name="ivy" classname="org.apache.ivy.ant.IvyTask" />
<target name="publish">
<ivy:publish settings="ivysettings.xml"/>
</target>
</project>
এখানে:
<ivy:publish>
টাস্ক ব্যবহার করা হয়েছে যা মডিউলটি local repository তে প্রকাশ করবে।settings="ivysettings.xml"
এই ফাইলের মাধ্যমে কনফিগারেশন ফাইল নির্দেশ করা হয়েছে।Ant স্ক্রিপ্টটি চালানোর মাধ্যমে মডিউলটি local repository তে প্রকাশ করতে পারেন:
ant publish
এটি আপনার my-module জার ফাইলটি local repository তে ${user.home}/.ivy2/local/com/example/my-module/1.0.0/my-module-1.0.0.jar
পাথে প্রকাশ করবে।
Remote repository হল একটি সার্ভার বা পাবলিক রিপোজিটরি যেখানে লাইব্রেরি বা মডিউলগুলি সারা বিশ্বে শেয়ার করা হয়, যেমন Maven Central বা Ivy Repository। আপনি যদি আপনার মডিউলটি অন্য ডেভেলপারদের সাথে শেয়ার করতে চান, তবে এটি একটি remote repository তে প্রকাশ করা প্রয়োজন।
প্রথমত, আপনাকে একটি remote repository কনফিগার করতে হবে যেখানে আপনি মডিউলটি পাবলিশ করবেন। নিচে Maven Central রিপোজিটরি ব্যবহার করার উদাহরণ দেওয়া হয়েছে:
<ivysettings>
<repositories>
<repository name="maven-central" url="https://repo.maven.apache.org/maven2" />
</repositories>
<resolvers>
<resolver name="maven-central" class="org.apache.ivy.plugins.resolver.URLResolver">
<artifact pattern="https://repo.maven.apache.org/maven2/[organisation]/[module]/[revision]/[artifact]-[revision].[ext]" />
</resolver>
</resolvers>
</ivysettings>
এখানে:
<repository>
ট্যাগে Maven Central রিপোজিটরি এর URL নির্ধারণ করা হয়েছে।<resolver>
ট্যাগে URLResolver ব্যবহৃত হয়েছে, যা Maven Central থেকে লাইব্রেরি রেজলভ করবে।Ivy টাস্কের মাধ্যমে remote repository তে মডিউল পাবলিশ করা যেতে পারে। Ant স্ক্রিপ্টে নিম্নলিখিতভাবে publish টাস্ক ব্যবহার করতে পারেন:
<project name="IvyPublishRemote" default="publish" basedir=".">
<taskdef name="ivy" classname="org.apache.ivy.ant.IvyTask"/>
<target name="publish">
<ivy:publish settings="ivysettings.xml"/>
</target>
</project>
এখানে:
<ivy:publish>
টাস্কটি Maven Central বা অন্য remote repository তে মডিউল প্রকাশ করবে।এখন, আপনি Ant স্ক্রিপ্টটি চালিয়ে মডিউলটি remote repository তে প্রকাশ করতে পারেন:
ant publish
এটি আপনার my-module মডিউলটি Maven Central বা আপনার নির্দিষ্ট remote repository তে প্রকাশ করবে।
যদি আপনি private remote repository তে মডিউল পাবলিশ করতে চান, তবে আপনাকে authentication কনফিগার করতে হবে।
<credentials host="repo.example.com" username="myuser" password="mypassword"/>
এখানে:
এটি Ivy কে নির্দিষ্ট remote repository তে পাবলিশ করার জন্য প্রয়োজনীয় authentication প্রদান করবে।
Ivy এবং Ant এর মাধ্যমে আপনি সহজেই আপনার প্রোজেক্টের মডিউলগুলি local এবং remote repositories তে পাবলিশ করতে পারেন। Local repository তে মডিউল প্রকাশ করার জন্য আপনাকে Ivy সেটিংস কনফিগারেশন এবং Ivy টাস্কের মাধ্যমে লাইব্রেরি ডাউনলোড এবং রেজলভ করতে হবে। Remote repository তে মডিউল প্রকাশ করতে আপনাকে Ivy সেটিংস কনফিগারেশন এবং Ant স্ক্রিপ্টের মাধ্যমে রিপোজিটরি URL এবং authentication কনফিগার করতে হবে। Ivy এর মাধ্যমে এই প্রক্রিয়া সহজভাবে স্বয়ংক্রিয়ভাবে সম্পন্ন করা যায়, যা ডেভেলপারদের জন্য লাইব্রেরি ম্যানেজমেন্ট আরও সহজ এবং কার্যকরী করে তোলে।
common.read_more