গ্রহনটি ইনক্রিমেন্টাল বিল্ডসের ধারণা পেয়েছে his এটি অবিশ্বাস্যভাবে কার্যকর কারণ এটি অনেক সময় সাশ্রয় করে।
এই কিভাবে দরকারী
বলুন আপনি স্রেফ একটি একক জাভা ফাইল পরিবর্তন করেছেন। ইনক্রিমেন্টাল বিল্ডাররা সবকিছু পুনরায় সংকলন না করে কোডটি সংকলন করতে সক্ষম হবেন (এতে আরও সময় লাগবে)।
এখন ম্যাভেন প্লাগইনগুলির মধ্যে সমস্যা কী
বেশিরভাগ ম্যাভেন প্লাগইনগুলি ইনক্রিমেন্টাল বিল্ডগুলির জন্য ডিজাইন করা হয়নি এবং তাই এটি এম 2e এর জন্য সমস্যা তৈরি করে। এম 2e জানেন না যে প্লাগইন লক্ষ্যটি এমন কিছু যা অত্যন্ত গুরুত্বপূর্ণ বা এটি অপ্রাসঙ্গিক। যদি কোনও ফাইল পরিবর্তিত হয় তবে এটি প্রতিটি প্লাগইন সম্পাদন করে তবে অনেক সময় লাগবে।
এই কারণেই এম 2 ই কার্যকর করে কীভাবে পরিচালনা করা উচিত তা নির্ধারণের জন্য মেটাডেটার তথ্যের উপর নির্ভর করে। এই মেটাডেটার তথ্য সরবরাহের জন্য এম 2 ই বিভিন্ন বিকল্প নিয়ে এসেছে এবং পছন্দক্রমের ক্রম নীচে (সর্বোচ্চ থেকে সর্বনিম্ন) রয়েছে
- প্রকল্পের pom.xML ফাইল
- পিতামাতা, গ্র্যান্ড-পিতামহ এবং তাই pom.xML ফাইল
- [এম 2 ই 1.2+] ওয়ার্কস্পেসের পছন্দগুলি
- এম 2 ই এক্সটেনশন ইনস্টল করা হয়েছে
- [এম 2 ই 1.1+] ম্যাভেন প্লাগইন দ্বারা সরবরাহকৃত লাইফসাইকেল ম্যাপিং মেটাডেটা
- ডিফল্ট লাইফসাইকেল ম্যাপিং মেটাডেটা এম 2 ই দিয়ে প্রেরণ করা হয়েছে
1,2 আপনার পম ফাইল বা এর পিতামাতার যে কোনও একটির ট্যাগে প্লাগইন পরিচালনা বিভাগ নির্দিষ্ট করে to M2E প্রকল্পটি কনফিগার করতে এই কনফিগারেশনটি পড়ে। নীচে স্নিপেট এম 2e কে ইউকোম্প্রেসার-মাভেন-প্লাগইনের লক্ষ্য jslint
এবং compress
লক্ষ্যগুলি উপেক্ষা করতে নির্দেশ দেয়
<pluginManagement>
<plugins>
<!--This plugin's configuration is used to store Eclipse m2e settings
only. It has no influence on the Maven build itself. -->
<plugin>
<groupId>org.eclipse.m2e</groupId>
<artifactId>lifecycle-mapping</artifactId>
<version>1.0.0</version>
<configuration>
<lifecycleMappingMetadata>
<pluginExecutions>
<pluginExecution>
<pluginExecutionFilter>
<groupId>net.alchim31.maven</groupId>
<artifactId>yuicompressor-maven-plugin</artifactId>
<versionRange>[1.0,)</versionRange>
<goals>
<goal>compress</goal>
<goal>jslint</goal>
</goals>
</pluginExecutionFilter>
<action>
<ignore />
</action>
</pluginExecution>
</pluginExecutions>
</lifecycleMappingMetadata>
</configuration>
</plugin>
</plugins>
</pluginManagement>
3) আপনি যদি এই মেটাডেটা দিয়ে আপনার পম ফাইলকে দূষিত করতে পছন্দ না করেন তবে আপনি এটি কোনও বাহ্যিক এক্সএমএল ফাইল (বিকল্প 3) এ সংরক্ষণ করতে পারেন। নীচে একটি নমুনা ম্যাপিং ফাইল রয়েছে যা ইউ 2 কমপ্রেসার-মাভেন-প্লাগইন এর লক্ষ্যগুলি jslint
এবং compress
লক্ষ্যগুলি উপেক্ষা করতে এম 2eকে নির্দেশ দেয়
<?xml version="1.0" encoding="UTF-8"?>
<lifecycleMappingMetadata>
<pluginExecutions>
<pluginExecution>
<pluginExecutionFilter>
<groupId>net.alchim31.maven</groupId>
<artifactId>yuicompressor-maven-plugin</artifactId>
<versionRange>[1.0,)</versionRange>
<goals>
<goal>compress</goal>
<goal>jslint</goal>
</goals>
</pluginExecutionFilter>
<action>
<ignore/>
</action>
</pluginExecution>
</pluginExecutions>
</lifecycleMappingMetadata>
৪) আপনি যদি এই ৩ টি বিকল্পের কোনও পছন্দ না করেন তবে আপনি ম্যাগেন প্লাগইনের জন্য এম 2 ই সংযোগকারী (এক্সটেনশন) ব্যবহার করতে পারেন conn সংযোগকারীটি এম 2 ইতে মেটাডেটা সরবরাহ করবে। আপনি এই লিঙ্কে একটি সংযোজকের মধ্যে মেটাডেটা তথ্যের উদাহরণ দেখতে পাচ্ছেন । আপনি হয়ত লক্ষ্য করেছেন যে মেটাডেটা কোনও কনফিগারকে বোঝায়। এর সহজ অর্থ হ'ল এম 2e এক্সটেনশন লেখকের দ্বারা সরবরাহিত সেই নির্দিষ্ট জাভা শ্রেণীর উপর দায়িত্ব অর্পণ করবে config কনফিগারকারী প্রকল্পটি কনফিগার করতে পারে (যেমন অতিরিক্ত উত্স ফোল্ডার ইত্যাদি যোগ করুন) এবং সিদ্ধান্ত নিতে পারে যে ইনক্রিমেন্টাল বিল্ডের সময় প্রকৃত ম্যাভেন প্লাগইন কার্যকর করা হবে (যদি কনফিগারারের মধ্যে সঠিকভাবে পরিচালিত হয়নি, এটি অফুরন্ত প্রকল্প তৈরি করতে পারে)
Configuratior (এর একটি উদাহরণ জন্য এই লিঙ্ক পড়ুন link1 , link2 )। সুতরাং যদি প্লাগইন এমন কিছু হয় যা বাহ্যিক সংযোজকের মাধ্যমে পরিচালনা করা যায় তবে আপনি এটি ইনস্টল করতে পারেন। এম 2e অন্যান্য বিকাশকারীদের দ্বারা অবদান করা এমন সংযোগকারীদের একটি তালিকা বজায় রাখে his এটি আবিষ্কারের তালিকা হিসাবে পরিচিত known এম 2e আপনাকে কোনও সংযোগ স্থাপনের জন্য অনুরোধ করবে যদি আপনার কাছে ইতিমধ্যে কোনও বিকল্পের (1-6) মাধ্যমে মৃত্যুদন্ড কার্যকর করার জন্য কোনও লাইফাইসাইকেল ম্যাপিং মেটাডেটা না থাকে এবং আবিষ্কারের ক্যাটালগটি কিছু এক্সটেনশন পেয়েছে যা এক্সিকিউশন পরিচালনা করতে পারে।
নীচের চিত্রটি দেখায় যে কীভাবে এম 2 ই আপনাকে বিল্ড-হেল্পার-মাভেন-প্লাগইনের জন্য সংযোগকারী ইনস্টল করতে অনুরোধ জানায়।
।
৫) এম 2e প্লাগইন লেখকদের উত্সাহিত করে ম্যাগন-প্লাগইনের মধ্যেই বর্ধিত বিল্ড এবং লাইফসাইকেল ম্যাপিং সরবরাহ করার জন্য উত্সাহ দেয় his এর অর্থ হ'ল ব্যবহারকারীদের কোনও অতিরিক্ত জীবনচক্র ম্যাপিং বা সংযোগকারী ব্যবহার করতে হবে না ome কিছু প্লাগইন লেখক ইতিমধ্যে এটি প্রয়োগ করেছেন
)) ডিফল্টরূপে এম 2 ই সাধারণত মাভেন-কম্পাইলার-প্লাগইন এবং আরও অনেকের মতো সাধারণত ব্যবহৃত প্লাগইনগুলির জন্য লাইফসাইকেল ম্যাপিং মেটাডেটা ধারণ করে।
এখন আবার প্রশ্নটিতে ফিরে আসুন: আপনি সম্ভবত সেই নির্দিষ্ট লক্ষের জন্য 1, 2 বা 3 তে উপেক্ষা করা জীবনচক্র ম্যাপিং সরবরাহ করতে পারেন যা আপনার জন্য সমস্যার সৃষ্টি করছে।