Built-in Configurations: compile, runtime, test

Java Technologies - অ্যাপাচি আইভি (Apache IVY) IVY কনফিগারেশন |
124
124

Apache Ivy ডিপেন্ডেন্সি ম্যানেজমেন্ট টুলের একটি গুরুত্বপূর্ণ ফিচার হলো built-in configurationsConfigurations হল সেই বিশেষ প্রসঙ্গ বা পরিবেশ যেখানে একটি নির্দিষ্ট ডিপেন্ডেন্সি ব্যবহৃত হবে। Ivy তিনটি গুরুত্বপূর্ণ বিল্ট-ইন কনফিগারেশন প্রদান করে যা সাধারণত Java প্রোজেক্টে ব্যবহৃত হয়:

  1. compile
  2. runtime
  3. test

এই কনফিগারেশনগুলো আপনাকে আপনার প্রোজেক্টের ডিপেন্ডেন্সি গুলোর ব্যবহারের স্কোপ নির্ধারণ করতে সাহায্য করে। একে scope বা dependency scope বলা হয়, যা নির্ধারণ করে যে একটি লাইব্রেরি কোন পর্যায়ে ব্যবহৃত হবে (যেমন, শুধুমাত্র compile-time, runtime, অথবা test-এ)।

১. compile Configuration

compile কনফিগারেশন ডিপেন্ডেন্সিগুলো কম্পাইলেশন সময় প্রয়োজন হয়। এটি ডিপেন্ডেন্সির একটি সাধারণ কনফিগারেশন, যা এমন লাইব্রেরি বা জার ফাইল গুলিকে অন্তর্ভুক্ত করে যেগুলি source code কম্পাইল করার জন্য প্রয়োজন। যখন একটি লাইব্রেরি compile কনফিগারেশনে যুক্ত করা হয়, তখন তা আপনার প্রোজেক্টের সোর্স কোড কম্পাইল করার জন্য ব্যবহৃত হবে।

উদাহরণ:

<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" conf="compile"/>
        <dependency org="junit" name="junit" rev="4.13.1" conf="compile"/>
    </dependencies>
</ivy-module>

এখানে:

  • commons-lang3 এবং junit লাইব্রেরি compile কনফিগারেশনের অধীনে রয়েছে, যা compile-time ডিপেন্ডেন্সি হিসেবে ব্যবহৃত হবে।

২. runtime Configuration

runtime কনফিগারেশন ডিপেন্ডেন্সিগুলো প্রোজেক্টের রানটাইম সময়ে ব্যবহৃত হয়, কিন্তু compile-time এ নয়। এগুলি সাধারণত লাইব্রেরি বা জার ফাইল হয়ে থাকে, যা আপনার অ্যাপ্লিকেশন রান করার সময় প্রয়োজন হয়। উদাহরণস্বরূপ, JDBC ড্রাইভার বা application server লাইব্রেরি।

উদাহরণ:

<ivy-module version="2.0">
    <info organisation="com.example" module="my-app" />
    
    <dependencies>
        <dependency org="org.apache.commons" name="commons-dbcp2" rev="2.8.0" conf="runtime"/>
    </dependencies>
</ivy-module>

এখানে:

  • commons-dbcp2 লাইব্রেরিটি runtime কনফিগারেশনের অধীনে রয়েছে, যা অ্যাপ্লিকেশন রানটাইমে ব্যবহৃত হবে, কিন্তু কম্পাইলেশনের সময় নয়।

৩. test Configuration

test কনফিগারেশন ডিপেন্ডেন্সিগুলো শুধুমাত্র টেস্টিং পর্যায়ে ব্যবহৃত হয়। এগুলি সাধারণত JUnit, Mockito বা অন্য টেস্টিং ফ্রেমওয়ার্কের লাইব্রেরি হতে পারে। এই কনফিগারেশনটি ব্যবহার করে আপনি নিশ্চিত করতে পারেন যে নির্দিষ্ট লাইব্রেরি শুধুমাত্র টেস্ট চলাকালীন ব্যবহৃত হবে, প্রোডাকশন বা রানটাইম বিল্ডে না।

উদাহরণ:

<ivy-module version="2.0">
    <info organisation="com.example" module="my-app" />
    
    <dependencies>
        <dependency org="org.junit" name="junit" rev="4.13.1" conf="test"/>
    </dependencies>
</ivy-module>

এখানে:

  • junit লাইব্রেরিটি test কনফিগারেশনের অধীনে রয়েছে, যা শুধুমাত্র টেস্টিং পর্বে ব্যবহৃত হবে।

৪. Configurations এর ব্যবহারের উদাহরণ

এখন, Ivy কনফিগারেশন ডিফাইন করার কিছু বাস্তব উদাহরণ দেখা যাক।

একটি পূর্ণাঙ্গ ivy.xml উদাহরণ:

<ivy-module version="2.0">
    <info organisation="com.example" module="my-project" />
    
    <dependencies>
        <!-- Compile time dependency -->
        <dependency org="org.apache.commons" name="commons-lang3" rev="3.12.0" conf="compile"/>

        <!-- Runtime dependency -->
        <dependency org="org.apache.commons" name="commons-dbcp2" rev="2.8.0" conf="runtime"/>

        <!-- Test time dependency -->
        <dependency org="org.junit" name="junit" rev="4.13.1" conf="test"/>
    </dependencies>
</ivy-module>

এখানে:

  • commons-lang3 compile কনফিগারেশনে রয়েছে, তাই এটি কোড কম্পাইল করার সময় ব্যবহৃত হবে।
  • commons-dbcp2 runtime কনফিগারেশনে রয়েছে, তাই এটি রানটাইমে ব্যবহৃত হবে।
  • junit test কনফিগারেশনে রয়েছে, তাই এটি শুধুমাত্র টেস্টিং সময়ে ব্যবহৃত হবে।

৫. Ivy কনফিগারেশন রেজলভ করা

এখন, যদি আপনি Ant স্ক্রিপ্ট ব্যবহার করেন, তবে Ivy টাস্কের মাধ্যমে এই কনফিগারেশন অনুযায়ী ডিপেন্ডেন্সি রেজলভ (resolve) করা যেতে পারে।

<project name="IvyExample" default="resolve-dependencies" basedir=".">
    <taskdef name="ivy" classname="org.apache.ivy.ant.IvyTask"/>
    
    <target name="resolve-dependencies">
        <ivy:resolve file="ivy.xml"/>
    </target>
</project>

এখানে:

  • ivy:resolve টাস্কটি ivy.xml ফাইল থেকে ডিপেন্ডেন্সি রেজলভ করবে, এবং compile, runtime, এবং test কনফিগারেশন অনুযায়ী লাইব্রেরি ডাউনলোড করবে।

৬. Configuration Dependencies ব্যবহার করা

Ivy আপনি কনফিগারেশন ডিপেন্ডেন্সি ব্যবহার করতে পারেন, যেখানে একটি কনফিগারেশন অন্য কনফিগারেশনের ডিপেন্ডেন্সি অন্তর্ভুক্ত করে।

<ivy-module version="2.0">
    <info organisation="com.example" module="my-app" />
    
    <configurations>
        <conf name="compile" />
        <conf name="test" extends="compile"/>
    </configurations>

    <dependencies>
        <!-- Compile dependency -->
        <dependency org="org.apache.commons" name="commons-lang3" rev="3.12.0" conf="compile"/>

        <!-- Test dependency extends compile -->
        <dependency org="junit" name="junit" rev="4.13.1" conf="test"/>
    </dependencies>
</ivy-module>

এখানে:

  • <conf name="test" extends="compile"/>: test কনফিগারেশন compile কনফিগারেশন থেকে ডিপেন্ডেন্সি গ্রহণ করবে।

সারাংশ

Apache Ivy ডিপেন্ডেন্সি ম্যানেজমেন্টের জন্য তিনটি প্রধান বিল্ট-ই কনফিগারেশন প্রদান করে:

  1. compile: এই কনফিগারেশনটি কম্পাইলেশন সময় প্রয়োজনীয় লাইব্রেরি নির্ধারণ করে।
  2. runtime: রানটাইম সময় প্রয়োজনীয় লাইব্রেরি নির্ধারণ করে।
  3. test: শুধুমাত্র টেস্টিং সময় প্রয়োজনীয় লাইব্রেরি নির্ধারণ করে।

এই কনফিগারেশনগুলো ব্যবহার করে আপনি সহজে আপনার প্রোজেক্টের ডিপেন্ডেন্সি ম্যানেজ করতে পারবেন এবং নির্ধারণ করতে পারবেন কোন লাইব্রেরি কোন পর্যায়ে ব্যবহৃত হবে। Ivy এর মাধ্যমে এই ডিপেন্ডেন্সিগুলোর সঠিক ভার্সন, ট্রান্সিটিভ ডিপেন্ডেন্সি এবং ভার্সন কনফ্লিক্ট হ্যান্ডলিং সহজ হয়।

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

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

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

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