Multi-module Project Build এবং Publish করা

Java Technologies - অ্যাপাচি আইভি (Apache IVY) Multi-module Project Management |
142
142

Apache Ivy-এর সাহায্যে multi-module project তৈরি করা এবং প্রতিটি মডিউলকে আলাদা আলাদাভাবে বিল্ড ও পাবলিশ করা যায়। এটি প্রোজেক্টের বিভিন্ন মডিউলের ডিপেন্ডেন্সি এবং রেজলভেশনকে সঠিকভাবে ম্যানেজ করতে সাহায্য করে। যখন আপনার প্রোজেক্টে একাধিক মডিউল থাকে, তখন আপনি Ivy ব্যবহার করে প্রতিটি মডিউলের জন্য ডিপেন্ডেন্সি রেজলভ, বিল্ড এবং পাবলিশিং প্রক্রিয়া অটোমেটিক করতে পারেন।

Multi-module Project কি?

একটি multi-module project হলো এমন একটি প্রোজেক্ট যা একাধিক মডিউল বা সাব-প্রোজেক্ট নিয়ে গঠিত। প্রতিটি মডিউল আলাদা আলাদা লাইব্রেরি বা অ্যাপ্লিকেশন হতে পারে, তবে তারা একে অপরের উপর নির্ভরশীল হতে পারে। যেমন, একটি বড় প্রোজেক্ট যা বিভিন্ন মডিউল, ক্লাস, লাইব্রেরি ব্যবহার করে, এবং তাদের মধ্যে ইন্টার-ডিপেন্ডেন্সি থাকতে পারে।

১. Ivy দিয়ে Multi-module Project Build করা

প্রথমে, আমরা একটি multi-module project তৈরি করি যার কয়েকটি মডিউল থাকবে এবং প্রতিটি মডিউল আলাদা আলাদা ডিপেন্ডেন্সি রেজলভ করবে। প্রতিটি মডিউল তাদের নিজস্ব ivy.xml ফাইল ব্যবহার করবে।

উদাহরণ: Multi-module Project Structure

ধরা যাক, আমাদের একটি প্রোজেক্টে দুটি মডিউল আছে:

  • module-a: প্রধান মডিউল
  • module-b: এটি module-a এর উপর নির্ভরশীল
my-multi-module-project/
│
├── module-a/
│   └── ivy.xml
│
├── module-b/
│   └── ivy.xml
│
└── build.xml

Step 1: module-a এর জন্য ivy.xml ফাইল

module-a এর জন্য একটি ivy.xml ফাইল তৈরি করুন যা এর নির্ভরশীল লাইব্রেরি নির্ধারণ করবে।

module-a/ivy.xml:

<ivy-module version="2.0">
    <info organisation="com.example" module="module-a" revision="1.0" />
    
    <dependencies>
        <dependency org="org.apache.commons" name="commons-lang3" rev="3.12.0"/>
    </dependencies>
</ivy-module>

এখানে:

  • module-a এর ডিপেন্ডেন্সি নির্ধারণ করা হয়েছে, যেমন commons-lang3 লাইব্রেরি।

Step 2: module-b এর জন্য ivy.xml ফাইল

module-b এর জন্য একটি ivy.xml ফাইল তৈরি করুন, এবং এটিকে module-a এর উপর নির্ভরশীল করুন।

module-b/ivy.xml:

<ivy-module version="2.0">
    <info organisation="com.example" module="module-b" revision="1.0" />
    
    <dependencies>
        <dependency org="com.example" name="module-a" rev="1.0"/>
    </dependencies>
</ivy-module>

এখানে:

  • module-b এর ডিপেন্ডেন্সি module-a এর উপর নির্ভরশীল, যা আগে তৈরি করা হয়েছে।

Step 3: Ant বিল্ড স্ক্রিপ্ট তৈরি করা

এখন, একটি build.xml ফাইল তৈরি করুন যা module-a এবং module-b এর জন্য ডিপেন্ডেন্সি রেজলভ করবে এবং বিল্ড করবে।

build.xml:

<project name="MultiModuleBuild" default="resolve-dependencies" basedir=".">

    <taskdef name="ivy" classname="org.apache.ivy.ant.IvyTask"/>

    <!-- Resolve dependencies for module-a -->
    <target name="resolve-module-a">
        <ivy:resolve file="module-a/ivy.xml"/>
        <ivy:retrieve file="module-a/ivy.xml"/>
    </target>

    <!-- Resolve dependencies for module-b -->
    <target name="resolve-module-b">
        <ivy:resolve file="module-b/ivy.xml"/>
        <ivy:retrieve file="module-b/ivy.xml"/>
    </target>

    <!-- Build module-a -->
    <target name="build-module-a" depends="resolve-module-a">
        <echo message="Building module-a"/>
        <!-- Module-a build commands (like compiling) can be added here -->
    </target>

    <!-- Build module-b -->
    <target name="build-module-b" depends="resolve-module-b">
        <echo message="Building module-b"/>
        <!-- Module-b build commands (like compiling) can be added here -->
    </target>

    <!-- Default target that builds all modules -->
    <target name="resolve-dependencies" depends="build-module-a, build-module-b"/>

</project>

এখানে:

  • resolve-module-a এবং resolve-module-b টার্গেটের মাধ্যমে Ivy টাস্ক ব্যবহার করে প্রতিটি মডিউলের জন্য ডিপেন্ডেন্সি রেজলভ এবং রিট্রিভ করা হচ্ছে।
  • build-module-a এবং build-module-b টার্গেটের মাধ্যমে মডিউলগুলি বিল্ড করা হচ্ছে, যেখানে আপনি কম্পাইলিং বা অন্যান্য বিল্ড স্টেপ যুক্ত করতে পারেন।
  • resolve-dependencies টার্গেটটি সকল মডিউল বিল্ড করার জন্য ব্যবহৃত হয়।

Step 4: Ant স্ক্রিপ্ট রান করা

এখন, Ant কমান্ড ব্যবহার করে স্ক্রিপ্টটি চালাতে হবে:

ant resolve-dependencies

এটি module-a এবং module-b এর ডিপেন্ডেন্সি রেজলভ করবে এবং তাদের ডাউনলোড করবে।


২. Multi-module Project Publish করা

Multi-module project পাবলিশ করার জন্য, আপনাকে প্রতিটি মডিউল আলাদাভাবে Ivy এর মাধ্যমে রিপোজিটরিতে পাবলিশ করতে হবে। Ivy টাস্কের মাধ্যমে এটি সম্ভব।

Step 1: module-a এবং module-b এর জন্য Ivy Publish Task

module-a এবং module-b উভয় মডিউলের জন্য publish টাস্ক তৈরি করতে হবে।

build.xmlpublish টাস্ক যুক্ত করা:

<target name="publish-module-a">
    <ivy:publish file="module-a/ivy.xml" settings="ivysettings.xml"/>
</target>

<target name="publish-module-b">
    <ivy:publish file="module-b/ivy.xml" settings="ivysettings.xml"/>
</target>

<target name="publish-all" depends="publish-module-a, publish-module-b">
    <echo message="All modules published successfully"/>
</target>

এখানে:

  • publish-module-a এবং publish-module-b টাস্ক ব্যবহার করে module-a এবং module-b কে রিপোজিটরিতে পাবলিশ করা হচ্ছে।
  • publish-all টার্গেটটি উভয় মডিউলকে একসাথে পাবলিশ করবে।

Step 2: Publish Command

এখন, Ant স্ক্রিপ্টের মাধ্যমে উভয় মডিউল রিপোজিটরিতে পাবলিশ করা যাবে:

ant publish-all

এটি module-a এবং module-b উভয়কে নির্দিষ্ট রিপোজিটরিতে পাবলিশ করবে।


৩. Ivy Repo থেকে Multi-module Project ব্যবহার করা

এখন, যদি আপনার multi-module project Ivy repository তে পাবলিশ করা থাকে, তাহলে আপনি অন্য প্রোজেক্টে সহজেই সেই মডিউলগুলিকে ডিপেন্ডেন্সি হিসেবে যুক্ত করতে পারবেন।

ivy.xml এ অন্য প্রোজেক্টে multi-module project ব্যবহার করার উদাহরণ:

<ivy-module version="2.0">
    <info organisation="com.example" module="other-project"/>
    
    <dependencies>
        <dependency org="com.example" name="module-a" rev="1.0"/>
        <dependency org="com.example" name="module-b" rev="1.0"/>
    </dependencies>
</ivy-module>

এখানে:

  • module-a এবং module-b অন্যান্য প্রোজেক্টে ডিপেন্ডেন্সি হিসেবে যুক্ত করা হয়েছে।

সারাংশ

Ivy ব্যবহার করে multi-module project তৈরি এবং পাবলিশ করা খুবই সহজ। আপনি প্রতিটি মডিউলের জন্য আলাদা ivy.xml ফাইল তৈরি করতে পারেন এবং তাদের জন্য ডিপেন্ডেন্সি রেজলভ এবং বিল্ড করতে পারেন। Ant বিল্ড স্ক্রিপ্টে Ivy টাস্ক ব্যবহার করে multi-module project এর জন্য ডিপেন্ডেন্সি রেজলভ এবং পাবলিশিং প্রক্রিয়া পরিচালনা করা যায়। Ivy এর মাধ্যমে multi-module project ম্যানেজমেন্ট আরও সহজ, কার্যকরী, এবং সুসংগঠিত হয়।

common.content_added_by
টপ রেটেড অ্যাপ

স্যাট অ্যাকাডেমী অ্যাপ

আমাদের অল-ইন-ওয়ান মোবাইল অ্যাপের মাধ্যমে সীমাহীন শেখার সুযোগ উপভোগ করুন।

ভিডিও
লাইভ ক্লাস
এক্সাম
ডাউনলোড করুন
Promotion