মাভেন: লাইফসাইকেল বনাম ফেজ বনাম প্লাগিন বনাম লক্ষ্য al
এই থ্রেডে অনুপস্থিত আরেকটি মাত্রার গ্রানুলারিলিটি স্পষ্ট করতে দেরি করে উত্তর দেওয়া: মৃত্যুদণ্ড কার্যকর করা (একটি লক্ষ্য), যা একটি মাভেন বিল্ডের ক্ষুদ্রতম ইউনিট।
অতএব, আমাদের চক্র তৈরি হয়েছে (মূলত, একটি নির্দিষ্ট সামগ্রিক লক্ষ্যের জন্য ক্রিয়াগুলির সেট), যা পর্যায়গুলি (নিম্ন গ্রানুলারিটি, একটি চক্র ধাপ) দ্বারা গঠিত থাকে, যা নির্দিষ্ট প্লাগইনগুলির দ্বারা সরবরাহিত কনফিগার করা লক্ষ্যগুলির সেটকে আহ্বান করতে পারে । এটি হচ্ছে, মাভেন (এছাড়াও) একটি প্লাগইন নির্বাহক, প্রতিটি প্লাগইন এক বা একাধিক লক্ষ্য সরবরাহ করতে পারে। আপনি তখন (এছাড়াও) সিদ্ধান্ত নেবেন যে কোন গোলটি কোন ধাপের সাথে সংযুক্ত রয়েছে, ডিফল্ট জীবনচক্রের বেশিরভাগ সময় (কোনওটি ছাড়াই, এটিই ডিফল্ট)। তবে আপনার আসলে আরও একটি স্তর থাকতে পারে: মৃত্যুদণ্ড কার্যকর করা (একই লক্ষ্য, একই প্লাগইন থেকে, বা বিভিন্ন প্লাগইন থেকে বিভিন্ন লক্ষ্য)
একটি চিত্র আমি পুরোপুরি আবার শুরু করার জন্য প্রস্তুত
এবং প্রকৃতপক্ষে এভাবেই মেভেন নিজের বিল্ড লগের অনন্য স্ট্রিংয়ের মাধ্যমে এটিকে (কাজের ক্ষুদ্রতম একক) এটি দেখায়:
plugin-artifactId:plugin-version:plugin-goal (goal-execution-id) @ project-name
উদাহরণস্বরূপ, আমাদের আছে:
[INFO] --- maven-compiler-plugin:2.5.1:compile (default-compile) @ sample-project ---
এর প্রকৃত অর্থ (বিভিন্ন স্তরের গ্রানুলারিটির মাধ্যমে):
compile
পর্যায়ের সময় (দুর্ভাগ্যক্রমে উল্লেখ করা হয়নি)>
- আমি মাভেন কম্পাইলার প্লাগইন (
artifactId
এবং version
)> এ আমন্ত্রণ জানাচ্ছি
- আমি এর
compile
লক্ষ্য> কে আমন্ত্রণ জানাচ্ছি
default-compile
কার্যকর হিসাবে নির্ধারিত
এটি অনন্য কারণ আপনার প্রকৃতপক্ষে একই লক্ষ্য (একই প্লাগইনের) বিভিন্ন ধাপে বা একই পর্যায়ে আবদ্ধ থাকতে পারে তবে বিভিন্ন মৃত্যুদণ্ডে (যা বিভিন্ন কনফিগারেশনের সাথে রয়েছে)। maven-compiler-plugin
উদাহরণস্বরূপ, এছাড়াও সময় ব্যবহার করা হয় test-compile
ফেজ কম্পাইল পরীক্ষা কোডে (একটি পৃথক পর্যায়) (তার মাধ্যমে testCompile
একটি ভিন্ন সম্পাদনের লক্ষ্য) ( default-testCompile
)। আপনি POM (এবং সম্ভাব্যভাবে একটি আলাদা কনফিগারেশন) নির্দিষ্ট করেছেন এমন একটি নির্বাহের দ্বারা নির্ধারিত একটি ভিন্ন ধাপের সময় কিছু স্বয়ংক্রিয়-উত্পন্ন কোডও সংকলন করতে পারেন (একই প্লাগিন এবং লক্ষ্য ব্যবহার করে) could
মাভেন প্যাকেজিং বাইন্ডিংয়ের মাধ্যমে ডিফল্ট মৃত্যুদণ্ড কার্যকর করা হয় , এটি ডিফল্টরূপে (এবং কনফিগারেশনের অধীনে কনভেনশন প্রয়োগ করে) মাভেন ইতিমধ্যে নির্দিষ্ট পর্যায়ে নির্দিষ্ট লক্ষ্যগুলি (স্ট্যান্ডার্ড প্লাগিনগুলির) আহ্বান করে। এই ডিফল্ট আমন্ত্রণগুলির ফাঁসি আইডিকে নির্দিষ্ট কনভেনশন অনুযায়ী সংজ্ঞায়িত করা হয় ।
এটিও ব্যাখ্যা করে যে আপনি যদি সত্যিই কোনও মাভেন বিল্ডের একটি ডিফল্ট আচরণ (বাঁধাই করা) ওভাররাইড করতে চান তবে একই প্লাগইনটির জন্য আপনার POM এ ঠিক একই এক্সিকিউশন আইডি নির্দিষ্ট করতে হবে (ওভাররাইড)। উদাহরণস্বরূপ, আপনি maven-compiler-plugin
একই default-compile
আইডির সাথে একটি কার্যকরকরণের সংজ্ঞা কেবল সংকলন এড়িয়ে যেতে পারেন তবে অস্তিত্বহীন পর্যায়ে আবদ্ধ (বা খালি) to
এটি সংক্ষিপ্ত করার জন্য : একটি নির্বাহী ম্যাভেনকে জানায় যে কোন ধাপের মধ্যে কোন কনফিগারেশন সহ কোন লক্ষ্য (গুলি) সম্পাদন করা উচিত।
কিছু মৃত্যুদণ্ড ডিফল্ট (ডিফল্ট বাইন্ডিং) দ্বারা সরবরাহ করা হয়, যা ব্যাখ্যা করে যে কেবলমাত্র 6 লাইনের মেনেন ন্যূনতম পোম ইতিমধ্যে কেন অনেক কিছু করতে পারে (সংকলন, পরীক্ষা, প্যাকেজ, ইত্যাদি): নির্দিষ্ট পর্যায়ে স্ট্যান্ডার্ড প্লাগইনের লক্ষ্য নির্বাহ: এটি কনভেনশন শেষ কনফিগারেশন. তারপরে, কনফিগারেশনের মাধ্যমে আপনি ইতিমধ্যে কনফিগার করা প্লাগইনগুলির আচরণ তৈরি করতে বা প্রভাবিত করতে স্টাফ (ফাঁসি) যুক্ত করতে পারেন (এই ক্ষেত্রে কোনও বিভাগ নেই, তবে যথেষ্ট হবে)।pom.xml
executions
configuration
হ্যাঁ, আপনি বিল্ড চক্র (এবং তাদের পর্যায়গুলি) এড়িয়ে যেতে পারেন এবং সরাসরি লক্ষ্যগুলি (প্লাগইনগুলির) শুরু করতে পারেন। নিম্নলিখিতটি কল্পনা করুন:
mvn compiler:compile
mvn compiler:testCompile
mvn surefire:test
mvn jar:jar
(দ্রষ্টব্য: আপনি কেবলমাত্র একটি কলে ইনলাইন আবেদন করতে পারেন)
এখানে আমরা অ্যাপ্লিকেশন কোড, পরীক্ষার কোড, পরীক্ষা ও প্যাকেজ কার্যকর করবো: কীভাবে ম্যানুয়াল, ত্রুটি-প্রবণ, পুনরাবৃত্তি এবং সময়সাপেক্ষ হবে তা কল্পনা করুন। কনফিগারেশন সম্পর্কিত কনভেনশন আমাদের সহায়তা করে: ম্যাভেন জীবনচক্র এবং পর্যায়গুলি তৈরির সাথে পরিচয় করিয়ে দেয় । ডিফল্ট জীবনচক্র (কোনও নাম ছাড়াই, এটি ডিফল্ট নয়) সেরা অনুশীলন এবং কনভেনশন (মাভেনের মন্ত্র) এর উপর ভিত্তি করে বিভিন্ন পর্যায়ের স্তর সরবরাহ করে।
যদি আপনি উপরের মতো একই অর্জন করতে চান তবে কেবল চালান: mvn package
এবং এটি স্বয়ংক্রিয়ভাবে আপনার প্রকল্পটি সংকলন, পরীক্ষা এবং প্যাকেজ করবে। কিভাবে? চালু প্লাগইন। এটি হ'ল পর্যায়গুলি হ'ল প্লাগইন (লক্ষ্য) নির্বাহের অর্থবহ এবং কনফিগারযোগ্য সেট। এটিকে আরও মানসম্পন্ন করার জন্য, প্রতিটি ধাপের জন্য মাভেন প্রথমে যে কোনও পূর্ববর্তী পর্বকে আহ্বান জানাবে, উদাহরণস্বরূপ যদি আপনি পরীক্ষা করতে চান তবে আপনি নিশ্চিত হন যে আপনি প্রথমে সংকলন করেছেন।
পিএস নোট করুন যে এর জন্য বেশ কয়েকটি লক্ষ্য নির্দিষ্ট করার সময় execution
, আপনি এখনও বিল্ড লগে দুটি পৃথক লক্ষ্য (একই আইডির সাথে) দুটি পৃথক মৃত্যুর জন্য পরিষ্কারভাবে দেখতে পাবেন (অতএব, এখনও অনন্য টিউপল)।