Depends Attribute: Task ডিপেন্ডেন্সি কনফিগার করা

Java Technologies - অ্যাপাচি অ্যান্ট টাস্কস (Apache ANT Tasks) Execution Flow Control Tasks |
141
141

Apache Ant-এ depends অ্যাট্রিবিউটটি একটি টাস্কের মধ্যে নির্দিষ্ট করে দেয় যে ওই টাস্কটি অন্য কোন টাস্কের ওপর নির্ভরশীল। অর্থাৎ, আপনি যখন কোন টাস্ক রান করতে চান, তখন আপনাকে সেই টাস্কটি রান করার আগে অন্য একটি টাস্ক বা টাস্কগুলির কার্য সম্পাদন করতে হবে।

depends অ্যাট্রিবিউটটি target টাস্কে ব্যবহৃত হয় এবং এটি একটি বা একাধিক টার্গেটের নাম গ্রহণ করে। এই টার্গেটগুলি ডিপেন্ডেন্ট টাস্ক হিসেবে রান হবে, এরপর বর্তমান টাস্কটি রান হবে।

Depends Attribute এর Syntax

<target name="target_name" depends="dependency_target1, dependency_target2">
    <!-- task definitions -->
</target>
  • name: এটি টার্গেটের নাম যা আপনি ডিফাইন করছেন।
  • depends: এটি সেই টার্গেটগুলির নাম নির্ধারণ করে যেগুলির উপর বর্তমান টাস্ক নির্ভরশীল।

১. Basic Example: Using Depends Attribute for Task Dependencies

এটি একটি মৌলিক উদাহরণ যেখানে একটি টার্গেটের ডিপেন্ডেন্সি ব্যবহৃত হচ্ছে:

<project name="DependsExample" default="build" basedir=".">
    
    <!-- Clean target: removes old build files -->
    <target name="clean">
        <echo message="Cleaning build directory..." />
        <delete dir="build" />
    </target>

    <!-- Compile target: compiles the Java code -->
    <target name="compile" depends="clean">
        <echo message="Compiling Java code..." />
        <javac srcdir="src" destdir="build/classes" />
    </target>

    <!-- Build target: creates a JAR file -->
    <target name="build" depends="compile">
        <echo message="Building JAR file..." />
        <jar destfile="build/myapp.jar" basedir="build/classes" />
    </target>
    
</project>

এখানে:

  • clean টার্গেট প্রথমে চলে, যা build ডিরেক্টরি মুছে দেয়।
  • compile টার্গেট রান হওয়ার আগে clean টার্গেটটি সম্পন্ন হতে হবে।
  • build টার্গেট compile টার্গেটের পর রান হবে।

আউটপুট:

Cleaning build directory...
Compiling Java code...
Building JAR file...

এটি Ant স্ক্রিপ্টে টাস্কের সিকোয়েন্স এবং ডিপেন্ডেন্সি সেট করার একটি খুব সাধারণ উদাহরণ।


২. Multiple Task Dependencies

আপনি একাধিক টাস্কের উপর ডিপেন্ডেন্সি নির্ধারণ করতে পারেন, যেখানে একটি টার্গেট একাধিক টাস্কের পরে রান হবে।

<project name="MultipleDependsExample" default="deploy" basedir=".">
    
    <!-- Target to clean old files -->
    <target name="clean">
        <echo message="Cleaning up old files..." />
    </target>

    <!-- Target to compile Java files -->
    <target name="compile">
        <echo message="Compiling the Java code..." />
    </target>

    <!-- Target to package the application -->
    <target name="package">
        <echo message="Packaging the application..." />
    </target>

    <!-- Target to deploy the application, depends on clean, compile, and package -->
    <target name="deploy" depends="clean, compile, package">
        <echo message="Deploying the application..." />
    </target>
    
</project>

এখানে:

  • deploy টাস্কটি clean, compile, এবং package টাস্কগুলির উপর নির্ভরশীল।
  • এই টাস্কগুলির মধ্যে যেগুলি আগে রান হবে, সেগুলি নির্দিষ্ট করা হয়েছে depends অ্যাট্রিবিউটের মাধ্যমে।

আউটপুট:

Cleaning up old files...
Compiling the Java code...
Packaging the application...
Deploying the application...

এটি অনেক টাস্কের জন্য একসাথে ডিপেন্ডেন্সি ব্যবহার করার একটি উদাহরণ।


৩. Circular Dependencies (সার্কুলার ডিপেন্ডেন্সি)

একটি circular dependency তখন ঘটে যখন টাস্কগুলি একে অপরের উপর নির্ভরশীল হয়ে একটি অবিন্যস্ত লুপ তৈরি করে। যেমন:

<project name="CircularDependencyExample" default="taskA" basedir=".">
    <target name="taskA" depends="taskB">
        <echo message="Executing taskA..." />
    </target>

    <target name="taskB" depends="taskA">
        <echo message="Executing taskB..." />
    </target>
</project>

এখানে:

  • taskA টাস্কটি taskB এর উপর নির্ভরশীল, এবং taskB টাস্কটি taskA এর উপর নির্ভরশীল। এই ধরনের সার্কুলার ডিপেন্ডেন্সি Ant স্ক্রিপ্টে infinite loop তৈরি করতে পারে, যার কারণে এটি কাজ করবে না।

সমাধান:

এটা এড়িয়ে চলা উচিত, কারণ এটি স্ক্রিপ্টের কার্যকারিতা নষ্ট করতে পারে। আপনাকে এধরনের লুপ এড়াতে হবে বা সঠিকভাবে ডিপেন্ডেন্সি তৈরি করতে হবে।


৪. Task Dependencies in a Build Lifecycle

Ant টাস্কগুলি সাধারণত একটি নির্দিষ্ট বিল্ড লাইফসাইকেলে থাকে, যেমন clean, compile, test, deploy। এই টাস্কগুলির মধ্যে ডিপেন্ডেন্সি নির্ধারণ করা যায় যাতে কার্যক্রম একটি সঠিক সিকোয়েন্সে সম্পন্ন হয়।

<project name="BuildLifecycle" default="deploy" basedir=".">
    
    <target name="clean">
        <echo message="Cleaning build artifacts..." />
    </target>

    <target name="compile" depends="clean">
        <echo message="Compiling source code..." />
    </target>

    <target name="test" depends="compile">
        <echo message="Running tests..." />
    </target>

    <target name="deploy" depends="test">
        <echo message="Deploying application..." />
    </target>
    
</project>

এখানে:

  • clean টাস্কটি প্রথমে চলবে, তারপর compile, তারপর test, এবং শেষে deploy টাস্কটি চলবে।
  • প্রতিটি টাস্কের আগে এর পূর্ববর্তী টাস্কটি সম্পন্ন হওয়া আবশ্যক।

আউটপুট:

Cleaning build artifacts...
Compiling source code...
Running tests...
Deploying application...

এটি বিল্ড লাইফসাইকেলে টাস্কগুলির নির্দিষ্ট অর্ডারে ডিপেন্ডেন্সি তৈরি করার একটি উদাহরণ।


৫. Using Depends with Conditional Logic

আপনি depends অ্যাট্রিবিউটকে condition টাস্কের সাথে একত্রে ব্যবহার করে শর্তসাপেক্ষভাবে টাস্কগুলির উপর নির্ভরশীলতা তৈরি করতে পারেন। উদাহরণস্বরূপ, একটি টাস্ক শুধুমাত্র তখনই রান হবে যখন একটি নির্দিষ্ট প্রপার্টি নির্দিষ্ট মান ধারণ করবে।

<project name="ConditionalDependsExample" default="deploy" basedir=".">
    
    <property name="isReady" value="true" />

    <target name="prepare" depends="checkCondition">
        <echo message="Preparing..." />
    </target>

    <target name="checkCondition">
        <condition property="isReady" value="true">
            <equals arg1="${isReady}" arg2="true" />
        </condition>
    </target>

    <target name="deploy" depends="prepare">
        <echo message="Deploying..." />
    </target>
    
</project>

এখানে:

  • isReady প্রপার্টি যদি true হয়, তবে prepare টাস্কটি চলবে এবং পরে deploy টাস্কটি চালানো হবে।

আউটপুট:

Preparing...
Deploying...

এটি depends অ্যাট্রিবিউট এবং condition টাস্ক ব্যবহার করে শর্তসাপেক্ষ ডিপেন্ডেন্সি তৈরি করার একটি উদাহরণ।


সারাংশ

depends অ্যাট্রিবিউটটি Apache Ant-এ টাস্কের মধ্যে ডিপেন্ডেন্সি কনফিগার করার জন্য ব্যবহৃত হয়, যা একটি টাস্কের পরবর্তী কার্যক্রম নির্ধারণ করে। এটি আপনাকে একাধিক টাস্কের মধ্যে সঠিক অর্ডারে কাজ সম্পাদন করতে সহায়তা করে। depends অ্যাট্রিবিউট ব্যবহার করে আপনি টাস্কগুলির মধ্যে সঠিক সম্পর্ক এবং কার্যক্রমের সিকোয়েন্স তৈরি করতে পারেন, যা বিল্ড প্রক্রিয়াকে আরও কার্যকরী ও অটোমেটেড করে তোলে।

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

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

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

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