CodeGym/Java Course/মডিউল 3/একটি Maven প্রকল্প নির্মাণ করার সময় ফাইল পরিচালনা করা

একটি Maven প্রকল্প নির্মাণ করার সময় ফাইল পরিচালনা করা

বিদ্যমান

2.1 maven-resources-plugin কপি রিসোর্স প্লাগইন

আপনি যদি একটি ওয়েব অ্যাপ্লিকেশন তৈরি করেন, তাহলে আপনার কাছে এটিতে একগুচ্ছ বিভিন্ন সংস্থান থাকবে। এগুলি হল জার লাইব্রেরি, জেএসপি সার্লেট, সেটিংস ফাইল। এবং অবশ্যই, এটি স্ট্যাটিক ফাইলগুলির একটি গুচ্ছ যেমন html, css, js, পাশাপাশি বিভিন্ন ছবি।

ডিফল্টরূপে, একটি প্রকল্প তৈরি করার সময়, Maven কেবল ফোল্ডার থেকে src/main/resourcesলক্ষ্য ডিরেক্টরিতে আপনার সমস্ত ফাইল অনুলিপি করবে। আপনি যদি এই আচরণে পরিবর্তন করতে চান, তাহলে প্লাগইন আপনাকে সাহায্য করবে maven-resources-plugin

এই ধরনের একটি প্লাগইনের জন্য নমুনা কোড:

<plugin>
    <artifactId>maven-resources-plugin</artifactId>
    <version>2.6</version>
    <executions>
        <execution>
            <id>copy-resources</id>
            <phase>validate</phase>
            <goals>
                <goal>copy-resources</goal>
            </goals>
            <configuration>
                <outputDirectory>
                   ${basedir}/target/resources
                </outputDirectory>
                <resources>
                    <resource>  instructions for copying a resource 1 </resource>
                    <resource>  instructions for copying a resource 2 </resource>
                    <resource>  instructions for copying a resource N </resource>
                </resources>
            </configuration>
        </execution>
    </executions>
</plugin>

এই প্লাগইনটি যাচাইকরণ পর্বের সময় কল করা হবে। ট্যাগ ব্যবহার করে, <outputDirectory>আপনি ডিরেক্টরি সেট করতে পারেন যেখানে প্লাগইনটি তে নির্দিষ্ট করা সংস্থানগুলি অনুলিপি করবে <resources>। এবং এখানেই প্লাগইনটি তার সমস্ত শক্তিতে প্রকাশ করতে পারে।

2.2 মাভেন-রিসোর্সেস-প্লাগইন দিয়ে রিসোর্স ফিল্টার করা

প্লাগইন সংস্থানগুলি কেবল ফাইলের আকারে নয়, অবিলম্বে ডিরেক্টরিগুলির আকারে নির্দিষ্ট করা যেতে পারে। তদুপরি, ডিরেক্টরিতে একটি মাস্ক যুক্ত করা যেতে পারে, যা নির্দিষ্ট করে যে এটি থেকে কোন ফাইলগুলি এই সংস্থানে অন্তর্ভুক্ত করা হবে।

উদাহরণ:


            <resource>
                <directory>src/main/resources/images</directory>
                <includes>
                     <include>**/*.png</include>
                </includes>
            </resource>

একটি মুখোশ হিসাবে দুটি তারকাচিহ্ন যেকোন সংখ্যক ডিরেক্টরির প্রতিনিধিত্ব করে । উপরের উদাহরণে, ডিরেক্টরিতে থাকা সমস্ত png ফাইল src/main/resources/images(এবং এর সাবডিরেক্টরিগুলি) রিসোর্স ডেটা হিসাবে নেওয়া হবে।

আপনি কিছু ফাইল বাদ দিতে চান, আপনি ব্যবহার করতে পারেন exclude. উদাহরণ:

<resource>
    <directory>src/main/resources/images</directory>
    <includes>
        <include>**/*.png</include>
    </includes>
    <excludes>
         <exclude>old/*.png</exclude>
    </excludes>
</resource>

ট্যাগগুলি ক্রমানুসারে প্রয়োগ করা হয়: প্রথমে, অন্তর্ভুক্ত ফাইলগুলিতে নির্দিষ্ট করা অন্তর্ভুক্ত ফাইলগুলি সম্পদে যোগ করা হবে এবং তারপরে বাদ দেওয়া ফাইলগুলি এই তালিকা থেকে বাদ দেওয়া হবে৷

কিন্তু এখানেই শেষ নয়. প্লাগইন ফাইলগুলির ভিতরে দেখতে পারে (যদি সেগুলি পাঠ্য হয়, অবশ্যই)। এবং, উদাহরণস্বরূপ, application.propertiesফাইলটিতে সমাবেশের প্রয়োজনীয় সংস্করণ যোগ করুন। প্লাগইন ফাইলের বিষয়বস্তু প্রক্রিয়া করার জন্য, আপনাকে পরামিতি নির্দিষ্ট করতে হবে <filtering>true</filtering>

উদাহরণ:

<resource>
    <directory>src/main/resources/properties</directory>
    <filtering>true</filtering>
    <includes>
        <include>**/*. properties </include>
    </includes>
</resource>

এই প্লাগইন সম্পর্কে আরও বিস্তারিত লিঙ্কে পাওয়া যাবে: https://maven.apache.org/plugins/maven-resources-plugin/examples/filter.html

2.3 মাভেন-সোর্স-প্লাগইন সোর্স ইনক্লুশন প্লাগইন

আরেকটি দরকারী প্লাগইন - maven-source-pluginআপনাকে সমাবেশে আপনার জাভা ফাইলগুলির উত্স কোড অন্তর্ভুক্ত করতে দেয়। কি জন্য?

জিনিসটি হল ওয়েব অ্যাপ্লিকেশন ছাড়াও, মাভেন ব্যবহার করে একটি খুব বড় সংখ্যক লাইব্রেরি একত্রিত হয়। অনেক জাভা প্রজেক্ট ওপেন-সোর্স ধারণাকে অনুসরণ করে এবং জাভা সম্প্রদায়ের কাছে তাদের নিজস্ব উৎস দিয়ে বিতরণ করা হয়।

কেন আপনি একটি পৃথক প্লাগইন প্রয়োজন? কেন আপনি শুধু উৎস অনুলিপি করতে পারেন না এবং এটা?

প্রথমত, যে কোনও জটিল প্রকল্পে, উত্সগুলি বেশ কয়েকটি জায়গায় সংরক্ষণ করা যেতে পারে।

দ্বিতীয়ত, xml স্পেসিফিকেশনের উপর ভিত্তি করে উত্সের প্রজন্ম প্রায়শই ব্যবহৃত হয়, এই জাতীয় উত্সগুলিকে সমাবেশে অন্তর্ভুক্ত করা দরকার।

এবং তৃতীয়ত, আপনি আপনার সমাবেশে কোনো বিশেষ গোপন ফাইল অন্তর্ভুক্ত না করার সিদ্ধান্ত নিতে পারেন।

ম্যাভেন-সোর্স-প্লাগইন প্লাগইন ব্যবহার করার একটি উদাহরণ:

<plugin>
    <groupId>org.apache.maven.plugins</groupId>
    <artifactId>maven-source-plugin</artifactId>
    <version>2.2.1</version>
    <executions>
        <execution>
            <id>attach-sources</id>
            <phase>verify</phase>
            <goals>
                <goal>jar</goal>
            </goals>
        </execution>
    </executions>
</plugin>

2.4 মাভেন-নির্ভরতা-প্লাগইন নির্ভরতা কপি প্লাগইন

একটি প্রকল্প তৈরি করার সময় আপনাকে স্মার্টলি নির্ভরতা (লাইব্রেরি) কপি করতে হতে পারে। এর জন্য একটি প্লাগইন ব্যবহার করা হয় maven-dependency-plugin

উদাহরণ:

<plugin>
    <groupId>org.apache.maven.plugins</groupId>
    <artifactId>maven-dependency-plugin</artifactId>
    <version>2.5.1</version>
    <configuration>
        <outputDirectory>
            ${project.build.directory}/lib/
        </outputDirectory>
    </configuration>
    <executions>
        <execution>
            <id>copy-dependencies</id>
            <phase>package</phase>
            <goals>
                <goal>copy-dependencies</goal>
            </goals>
        </execution>
    </executions>
</plugin>

এই উদাহরণে, প্লাগইনের ডিফল্ট আচরণ লেখা হয় - লাইব্রেরি কপি করা ${project.build.directory}/lib

এক্সিকিউশন সেকশনে বলা হয়েছে যে প্লাগইনটিকে বিল্ড ফেজ - প্যাকেজ, লক্ষ্য - কপি-নির্ভরতার সময় কল করা হবে।

সাধারণভাবে, এই প্লাগইনটির লক্ষ্যগুলির একটি মোটামুটি বড় সেট রয়েছে, এখানে সর্বাধিক জনপ্রিয়গুলি রয়েছে:

1 নির্ভরতা: বিশ্লেষণ নির্ভরতা বিশ্লেষণ (ব্যবহৃত, অব্যবহৃত, নির্দিষ্ট, অনির্দিষ্ট)
2 নির্ভরতা: বিশ্লেষণ-সদৃশ ডুপ্লিকেট নির্ভরতা সনাক্ত করা
3 নির্ভরতা: সমাধান সমস্ত নির্ভরতার রেজোলিউশন (সংজ্ঞা)
4 নির্ভরতা: সমাধান-প্লাগইন সমস্ত প্লাগইনের অনুমতি (সংজ্ঞা)
5 নির্ভরতা: গাছ নির্ভরতা গাছ প্রদর্শন করা হচ্ছে

আপনি কনফিগারেশন বিভাগে অতিরিক্ত পরামিতি সেট করতে পারেন:

1 আউটপুট ডিরেক্টরি ডিরেক্টরি যেখানে নির্ভরতা অনুলিপি করা হবে
2 overwriteReleases রিলিজ তৈরি করার সময় নির্ভরতা ওভাররাইট করতে ফ্ল্যাগ করুন
3 ওভাররাইট স্ন্যাপশট স্ন্যাপশট আছে এমন নন-টার্মিনাল নির্ভরতা ওভাররাইট করতে ফ্ল্যাগ করুন
4 overWriteIfNewer নতুন সংস্করণ সহ লাইব্রেরিগুলিকে ওভাররাইট করতে ফ্ল্যাগ করুন৷

উদাহরণ:


<configuration>
    <outputDirectory>
         ${project.build.directory}/lib/
    </outputDirectory>
    <overWriteReleases>false</overWriteReleases>
    <overWriteSnapshots>false</overWriteSnapshots>
    <overWriteIfNewer>true</overWriteIfNewer>
 </configuration>

ডিফল্টরূপে <overWriteReleases>, এবং <overWriteSnapshots>মিথ্যা, কারণ <overWriteIfNewer>সত্য।

মন্তব্য
  • জনপ্রিয়
  • নতুন
  • পুরানো
মন্তব্য লেখার জন্য তোমাকে অবশ্যই সাইন ইন করতে হবে
এই পাতায় এখনও কোনো মন্তব্য নেই