ForEach Task: লুপের মাধ্যমে Task চালানো

Java Technologies - অ্যাপাচি অ্যান্ট টাস্কস (Apache ANT Tasks) Iteration এবং Looping Tasks |
130
130

Apache Ant-এ <foreach> টাস্কটি লুপিং করার জন্য ব্যবহৃত হয়, যেখানে আপনি একটি নির্দিষ্ট তালিকা বা সিলেকশন থেকে একের পর এক আইটেম প্রক্রিয়া করতে পারেন। এটি কার্যকরী যখন আপনাকে একই ধরনের কাজ একাধিক ফাইলে বা মানের উপর চালাতে হয়, যেমন একাধিক ফাইল কপি করা, একাধিক ফোল্ডারে কাজ করা, বা একাধিক টাস্ক চালানো।

<foreach> টাস্কটি সাধারণত একটি list বা set থেকে আইটেম নিয়ে লুপের মাধ্যমে কার্যক্রম সম্পাদন করে।

ForEach Task এর Syntax

<foreach list="list_variable" target="target_name" />
  • list: এটি একটি মান বা তালিকা (list) যা লুপের মধ্যে প্রক্রিয়া করা হবে।
  • target: এটি একটি টার্গেট বা কাজ যা লুপের প্রতিটি আইটেমের জন্য চালানো হবে।

১. Basic Example: Loop Through List of Files

এটি একটি মৌলিক উদাহরণ যেখানে একটি ফাইলের তালিকা ব্যবহার করে প্রতিটি ফাইলের উপর কার্যক্রম চালানো হবে।

<project name="ForEachExample" default="processFiles" basedir=".">
    
    <property name="files.list" value="file1.txt,file2.txt,file3.txt" />

    <target name="processFiles">
        <foreach list="${files.list}" delimiter="," target="processFile"/>
    </target>

    <target name="processFile">
        <echo message="Processing ${item}" />
    </target>
    
</project>

এখানে:

  • files.list: একটি প্রপার্টি যা ফাইলের তালিকা ধারণ করে।
  • foreach: এটি তালিকার মধ্যে প্রতিটি ফাইলের জন্য processFile টাস্ক চালাবে।
  • delimiter=",": এটি তালিকার আইটেমগুলির মধ্যে কমা (,) ব্যবহার করে আইটেমগুলো আলাদা করবে।
  • ${item}: এটি প্রতিটি আইটেমের মান গ্রহণ করবে এবং এটি echo টাস্কে ব্যবহৃত হবে।

আউটপুট:

Processing file1.txt
Processing file2.txt
Processing file3.txt

২. Using ForEach with Fileset

<foreach> টাস্কটি fileset এর সাথে ব্যবহার করা যেতে পারে, যেখানে আপনি ডিরেক্টরি থেকে ফাইল নির্বাচন করে তাদের উপর কাজ করতে পারেন।

<project name="ForEachFilesetExample" default="processFiles" basedir=".">
    
    <target name="processFiles">
        <foreach>
            <fileset dir="src" includes="*.java"/>
            <target name="processFile"/>
        </foreach>
    </target>

    <target name="processFile">
        <echo message="Processing ${file}" />
    </target>
    
</project>

এখানে:

  • fileset dir="src" includes="*.java": এটি src ডিরেক্টরি থেকে সব .java ফাইল নির্বাচন করবে।
  • foreach: এই ফাইলগুলির উপর একটি লুপ চালাবে এবং processFile টাস্কটি প্রতিটি ফাইলে কার্যকর করবে।

আউটপুট (যদি src ডিরেক্টরিতে 2টি .java ফাইল থাকে):

Processing file1.java
Processing file2.java

৩. Using ForEach with Ant Property

এটি এমন একটি উদাহরণ যেখানে একটি প্রপার্টির মানের উপর ভিত্তি করে লুপ করা হচ্ছে।

<project name="ForEachPropertyExample" default="processItems" basedir=".">
    
    <property name="items" value="apple,banana,orange" />

    <target name="processItems">
        <foreach list="${items}" delimiter="," target="processItem" />
    </target>

    <target name="processItem">
        <echo message="Processing item: ${item}" />
    </target>
    
</project>

এখানে:

  • items: একটি প্রপার্টি যা কমা দিয়ে পৃথক করা আইটেম ধারণ করে।
  • foreach: এটি items প্রপার্টির উপর লুপ চালাবে এবং প্রতিটি আইটেমের জন্য processItem টাস্ক চালাবে।

আউটপুট:

Processing item: apple
Processing item: banana
Processing item: orange

৪. Using ForEach with Dynamic Property

আপনি <foreach> টাস্কের মাধ্যমে dynamic property বা ভেরিয়েবলও ব্যবহার করতে পারেন, যেখানে প্রতিটি আইটেমের জন্য ভিন্ন ভিন্ন প্রপার্টি সেট করতে হবে।

<project name="DynamicPropertyExample" default="processDynamicProperties" basedir=".">
    
    <property name="fruits" value="apple,banana,orange" />

    <target name="processDynamicProperties">
        <foreach list="${fruits}" delimiter="," target="processFruit" />
    </target>

    <target name="processFruit">
        <property name="fruit.name" value="${item}" />
        <echo message="Processing ${fruit.name}" />
    </target>
    
</project>

এখানে:

  • ${item}: এটি প্রতিটি ফ্রুটের নাম ব্যবহার করবে এবং fruit.name প্রপার্টি সেট করবে।
  • echo: এই প্রপার্টির মানকে কনসোলে প্রিন্ট করবে।

আউটপুট:

Processing apple
Processing banana
Processing orange

৫. Using ForEach with Nested Tasks

<foreach> টাস্কটি একাধিক টাস্কের সাথে ব্যবহার করা যেতে পারে যাতে একাধিক কার্যক্রম একের পর এক এক আইটেমের জন্য সম্পাদিত হয়।

<project name="ForEachWithNestedTasks" default="processItems" basedir=".">
    
    <property name="items" value="apple,banana,orange" />

    <target name="processItems">
        <foreach list="${items}" delimiter="," target="processItem" />
    </target>

    <target name="processItem">
        <echo message="Start processing ${item}" />
        <mkdir dir="build/${item}" />
        <echo message="Finished processing ${item}" />
    </target>
    
</project>

এখানে:

  • : প্রতিটি আইটেমের জন্য একটি নতুন ডিরেক্টরি তৈরি করবে, যেখানে ফোল্ডারের নাম আইটেমের নাম হবে।
  • : শুরু এবং শেষ বার্তা প্রিন্ট করবে।

আউটপুট (যদি items প্রপার্টির মান apple, banana, orange থাকে):

Start processing apple
Finished processing apple
Start processing banana
Finished processing banana
Start processing orange
Finished processing orange

এছাড়া, build/apple, build/banana, এবং build/orange ডিরেক্টরি তৈরি হবে।


সারাংশ

<foreach> টাস্কটি Apache Ant-এ একটি শক্তিশালী টুল যা আপনাকে একটি তালিকা, প্রপার্টি, বা ফাইল সেটের মাধ্যমে লুপ চালানোর ক্ষমতা প্রদান করে। এটি আপনাকে একাধিক ফাইল বা প্রপার্টির উপর কাজ করার জন্য একটি অটোমেটেড এবং গতিশীল প্রক্রিয়া তৈরি করতে সাহায্য করে। ForEach Task ব্যবহার করে আপনি একাধিক ফাইল কপি, প্রক্রিয়া, অথবা অন্যান্য টাস্ক একাধিক আইটেমের জন্য চালাতে পারেন, যা আপনার বিল্ড প্রক্রিয়া আরও কার্যকর এবং কাস্টমাইজড করতে সহায়তা করে।

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

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

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

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