ম্যাভেন গোল এবং পর্যায়গুলির মধ্যে পার্থক্য / সম্পর্ক কী? তারা একে অপরের সাথে কীভাবে সম্পর্কিত?
ম্যাভেন গোল এবং পর্যায়গুলির মধ্যে পার্থক্য / সম্পর্ক কী? তারা একে অপরের সাথে কীভাবে সম্পর্কিত?
উত্তর:
লক্ষ্যগুলি পর্যায়ক্রমে সম্পাদন করা হয় যা অর্ডের লক্ষ্যগুলি কার্যকর করা যায় তা নির্ধারণে সহায়তা করে this এটির সর্বোত্তম বোঝাপড়াটি ডিফল্ট মাভেন লাইফাইসাইকেল বাইন্ডিংগুলিকে দেখা উচিত যা দেখায় যে কোন গোলগুলি ডিফল্টরূপে কোন ধাপে ধাপে এগিয়ে যায়। সংকলন পর্বের লক্ষ্যগুলি সর্বদা পরীক্ষার পর্বের লক্ষ্যগুলির আগে কার্যকর করা হবে যা সর্বদা প্যাকেজ পর্বের লক্ষ্যগুলির আগে কার্যকর করা হবে ইত্যাদি।
বিভ্রান্তির অংশটি এই সত্যটির দ্বারা আরও তীব্র হয়ে উঠেছে যে আপনি যখন ম্যাভেনকে মৃত্যুদন্ড কার্যকর করার সময় আপনি কোনও লক্ষ্য বা একটি পর্যায় নির্দিষ্ট করতে পারেন। আপনি যদি একটি পর্যায় নির্দিষ্ট করেন তবে ম্যাভেন আপনার নির্ধারিত পর্যায়ে পর্যায়ক্রমে সমস্ত ধাপ চালাবেন (যেমন আপনি যদি প্যাকেজ নির্দিষ্ট করেন তবে এটি প্রথমে সংকলন পর্বে এবং তারপরে পরীক্ষার পর্ব এবং শেষ পর্যন্ত প্যাকেজ পর্বের মধ্য দিয়ে চলবে) এবং প্রতিটি পর্বের জন্য এটি হবে এই পর্যায়ে সংযুক্ত সমস্ত লক্ষ্য চালান।
আপনি যখন আপনার মাভেন বিল্ড ফাইলে একটি প্লাগইন এক্সিকিউশন তৈরি করেন এবং আপনি কেবল লক্ষ্যটি নির্দিষ্ট করেন তখন এটি সেই লক্ষ্যটিকে একটি নির্দিষ্ট ডিফল্ট পর্যায়ে আবদ্ধ করে। উদাহরণস্বরূপ, জ্যাক্সবি: এক্সজেসি লক্ষ্যটি উত্পন্ন-সংস্থান পর্যায়ে ডিফল্টরূপে আবদ্ধ হয়। যাইহোক, আপনি যখন নির্বাহটি নির্দিষ্ট করেন আপনি সেই লক্ষ্যের জন্য স্পষ্টভাবে পর্বটিও নির্দিষ্ট করে দিতে পারেন।
আপনি মাভেনকে কার্যকর করার সময় যদি আপনি কোনও লক্ষ্য নির্দিষ্ট করে থাকেন তবে তা সেই লক্ষ্যটি এবং কেবলমাত্র সেই লক্ষ্যে চালিত হবে। অন্য কথায়, আপনি যদি জারটি: জারের লক্ষ্য উল্লেখ করেন তবে এটি কেবল জারটি চালাবে: আপনার কোডটিকে একটি জারে প্যাকেজ করার জন্য জার লক্ষ্য। আপনি যদি পূর্বে সংকলন লক্ষ্যটি না চালিয়ে থাকেন বা অন্য কোনও উপায়ে আপনার সংকলিত কোড প্রস্তুত না করেন এটি সম্ভবত ব্যর্থ হতে পারে।
mvn archetype:generate
, এবং সেই ক্ষেত্রে ম্যাভেন কেবলমাত্র লক্ষ্যটি কার্যকর করে?
mvn test
রান:, --- maven-resources-plugin:2.6:resources ... --- maven-compiler-plugin:3.1:compile ... --- maven-resources-plugin:2.6:testResources ... --- maven-compiler-plugin:3.1:testCompile ... --- maven-surefire-plugin:2.12.4:test
যখন mvn compiler:testCompile
মাত্র রান --- maven-compiler-plugin:3.1:testCompile ...
।
mvn clean compiler:testCompile
রান করে --- maven-clean-plugin:2.5:clean ... --- maven-compiler-plugin:3.1:testCompile
যা ব্যর্থ হয় Failed to execute goal org.apache.maven.plugins:maven-compiler-plugin:3.1:testCompile (default-cli) on project mvnphase: Compilation failure ... cannot find symbol ... symbol: variable MvnPhase
(যেখানে MvnPhase
পরীক্ষার অধীনে শ্রেণিটি পরীক্ষার শ্রেণিতে উল্লেখ করা হয়)। স্পষ্টত যদি কোনও লক্ষ্যকে আমন্ত্রণ জানানো হয় তবে পর্যায়ক্রমে পর্যায়গুলি শুরু করা হয় না।
জীবনচক্র নামকরণের পর্যায়ের ক্রম ।
পর্যায়ক্রমে ধারাবাহিকভাবে কার্যকর করা হয়। একটি পর্যায় কার্যকর করার অর্থ পূর্ববর্তী সমস্ত পর্যায়গুলি সম্পাদন করে।প্লাগইন একটি সংগ্রহ গোল (এছাড়াও Mojo নামক এম Aven হে LD জে আভা হে bject)।
সাদৃশ্য: প্লাগইন একটি শ্রেণি এবং লক্ষ্যগুলি শ্রেণীর মধ্যে পদ্ধতি।
মাভেন একটি বিল্ড লাইফ সাইকেলগুলির কেন্দ্রীয় ধারণাটি ভিত্তিক । প্রতিটি ইনসাইড বিল্ড জীবন চক্র আছে দশা বিল্ড , এবং প্রতিটি ভিতরে দশা বিল্ড আছে গোল বিল্ড ।
আমরা একটি বিল্ড ফেজ কার্যকর করতে পারি বা লক্ষ্য নির্ধারণ করতে পারি। বিল্ড ফেজ কার্যকর করার সময় আমরা সেই বিল্ড পর্বের মধ্যে সমস্ত বিল্ড লক্ষ্যগুলি কার্যকর করি। এক বা একাধিক বিল্ড পর্যায়গুলিতে বিল্ড লক্ষ্য নির্ধারিত হয়। আমরা সরাসরি একটি বিল্ড গোল নির্বাহ করতে পারি।
তিনটি বিল্ট-ইন বিল্ড লাইফ চক্র রয়েছে :
প্রতিটি বিল্ড লাইফাইসাইকেলটি মেড আপ অব পর্বস
উদাহরণস্বরূপ, default
নিম্নোক্ত বিল্ড পর্যায়গুলির জীবনচক্রটি গঠিত :
◾validate - validate the project is correct and all necessary information is available
◾compile - compile the source code of the project
◾test - test the compiled source code using a suitable unit testing framework. These tests should not require the code be packaged or deployed
◾package - take the compiled code and package it in its distributable format, such as a JAR.
◾integration-test - process and deploy the package if necessary into an environment where integration tests can be run
◾verify - run any checks to verify the package is valid and meets quality criteria
◾install - install the package into the local repository, for use as a dependency in other projects locally
◾deploy - done in an integration or release environment, copies the final package to the remote repository for sharing with other developers and projects.
উপরের পর্যায়গুলি অতিক্রম করার জন্য, আমাদের কেবল একটি কমান্ড কল করতে হবে:
mvn <phase> { Ex: mvn install }
উপরের কমান্ডের জন্য, প্রথম পর্যায় থেকে শুরু করে, 'ইনস্টল' পর্যায়ে সমস্ত পর্ব ক্রমানুসারে কার্যকর করা হবে। mvn
হয় কোনও লক্ষ্য বা একটি পর্যায় (বা একাধিক লক্ষ্য বা একাধিক পর্যায়) কার্যকর করতে পারে:
mvn clean install plugin:goal
তবে, আপনি যদি আপনার প্লাগইনটি রেফারেন্স করতে ব্যবহৃত উপসর্গটি কাস্টমাইজ করতে চান তবে আপনি maven-plugin-plugin
আপনার প্লাগইন এর POM এর কনফিগারেশন প্যারামিটারের মাধ্যমে সরাসরি উপসর্গটি নির্দিষ্ট করতে পারেন ।
একটি বিল্ড ফেজটি প্লাগিন লক্ষ্যগুলির তৈরি হয়
মাভেনের বেশিরভাগ কার্যকারিতা প্লাগইনে রয়েছে। একটি প্লাগইন লক্ষ্যগুলির একটি সেট সরবরাহ করে যা নিম্নলিখিত সিনট্যাক্স ব্যবহার করে সম্পাদন করা যেতে পারে:
mvn [plugin-name]:[goal-name]
উদাহরণস্বরূপ, একটি জাভা প্রকল্পটি চলমান দ্বারা কম্পাইলার-প্লাগইনের সংকলন-লক্ষ্য দিয়ে সংকলন করা যেতে পারে mvn compiler:compile
।
বিল্ড লাইফাইসাইকাল নামকরণের পর্যায়গুলির একটি তালিকা যা লক্ষ্য নির্বাহের আদেশ দেওয়ার জন্য ব্যবহার করা যেতে পারে।
প্লাগইনগুলি সরবরাহিত লক্ষ্যগুলি লাইফসাইকের বিভিন্ন ধাপের সাথে যুক্ত হতে পারে। উদাহরণস্বরূপ, ডিফল্টরূপে, লক্ষ্যটি পর্বেরcompiler:compile
সাথে যুক্ত হয় , যখন লক্ষ্যটি পর্বের সাথে সম্পর্কিত হয় । নিম্নলিখিত আদেশটি বিবেচনা করুন: compile
surefire:test
test
mvn test
পূর্ববর্তী কমান্ডটি কার্যকর করা হলে, মাভেন প্রতিটি ধাপের সাথে সম্পর্কিত এবং সমস্ত test
পর্যায়ের পর্যায় সহ সমস্ত লক্ষ্য চালান । এমন ক্ষেত্রে, মাভেন পর্বের resources:resources
সাথে জড়িত গোলটি চালায় এবং process-resources
তারপরে compiler:compile
অবশেষে surefire:test
লক্ষ্য না চালানো পর্যন্ত ।
যাইহোক, যদিও বিল্ড পর্বটি বিল্ড লাইফাইসাইকেলের নির্দিষ্ট ধাপের জন্য দায়বদ্ধ তবে এটি যেভাবে এই দায়িত্বগুলি সম্পাদন করে তা ভিন্ন হতে পারে। এবং এটি সেই বিল্ড পর্যায়গুলিতে আবদ্ধ প্লাগইন লক্ষ্যগুলি ঘোষণার মাধ্যমে করা হয়।
একটি প্লাগইন লক্ষ্য একটি নির্দিষ্ট কাজ (একটি বিল্ড ফেজের চেয়ে সূক্ষ্ম) প্রতিনিধিত্ব করে যা কোনও প্রকল্পের বিল্ডিং এবং পরিচালনায় অবদান রাখে। এটি শূন্য বা আরও বেশি বিল্ড পর্বের সাথে আবদ্ধ হতে পারে। কোনও বিল্ড ফেজের সাথে আবদ্ধ না হওয়া লক্ষ্যটি সরাসরি অনুরোধের মাধ্যমে বিল্ড লাইফসাইকেলের বাইরে কার্যকর করা যেতে পারে। কার্য সম্পাদনের ক্রম নির্ভর করে যেখানে লক্ষ্য (গুলি) এবং বিল্ড ফেজ (গুলি) প্রেরণ করা হয়েছে তার উপর। উদাহরণস্বরূপ, নীচের কমান্ডটি বিবেচনা করুন। clean
এবং package
যুক্তি বিল্ড পর্যায়ক্রমে আছে যখন dependency:copy-dependencies
(ক প্লাগিনের) একটি লক্ষ্য।
mvn clean dependency:copy-dependencies package
যদি এটি কার্যকর করা হয় তবে clean
পর্বটি প্রথমে কার্যকর করা হবে (অর্থাত্ এটি ক্লিন লাইফাইসাইকেলের সমস্ত পূর্ববর্তী পর্যায়গুলি পরিচালনা করবে, clean
পর্বটি নিজেই হবে) এবং তারপরে dependency:copy-dependencies
লক্ষ্যটি অবশেষে package
পর্বটি কার্যকর করার আগে (এবং এর পূর্ববর্তী সমস্ত বিল্ড পর্বগুলি কার্যকর করা হবে) ডিফল্ট জীবনচক্র)।
তদুপরি, যদি কোনও লক্ষ্য এক বা একাধিক বিল্ড পর্যায়ের মধ্যে আবদ্ধ থাকে, তবে সেই লক্ষ্যটি সেই সমস্ত পর্যায়ে ডাকা হবে।
তদুপরি, একটি বিল্ড ফেজ এর সাথে শূন্য বা আরও বেশি কিছু লক্ষ্য আবদ্ধ থাকতে পারে। যদি কোনও বিল্ড ফেজের কোনও লক্ষ্য আবদ্ধ না থাকে তবে সেই বিল্ড ফেজটি কার্যকর হবে না। তবে এর যদি এক বা একাধিক লক্ষ্য আবদ্ধ থাকে তবে তা সে সমস্ত লক্ষ্য কার্যকর করে।
বিল্ট-ইন লাইফাইসাইকেল বাইন্ডিংস
কিছু ধাপের লক্ষ্যগুলি তাদের ডিফল্টরূপে আবদ্ধ করে। এবং ডিফল্ট জীবনচক্রের জন্য, এই বাইন্ডিংগুলি প্যাকেজিং মানের উপর নির্ভর করে।
মাভেন আর্কিটেকচার:
মাভেন লাইফাইসাইকেল ম্যাপিংয়ের জন্য গ্রহণের নমুনা
[plugin-name]
উদাহরণে mvn [plugin-name]:[goal-name]
বরং একটি প্লাগইন উপসর্গ আছে । mvn clean install
শুধুমাত্র " একটি বহু-মডিউল দৃশ্যে ব্যবহার করা যাবে "। মাল্টি-মডিউল সম্পূর্ণ ভিন্ন বিষয় is
নির্বাচিত উত্তরটি দুর্দান্ত, তবে তবুও আমি বিষয়টিতে ছোট কিছু যুক্ত করতে চাই। একটি দৃষ্টান্ত।
এটি স্পষ্টভাবে দেখায় যে বিভিন্ন পর্যায়গুলি বিভিন্ন প্লাগইনগুলির সাথে কীভাবে আবদ্ধ হয় এবং সেই প্লাগইনগুলি প্রকাশ করে goals
সুতরাং, আসুন এরকম কিছু চালানোর ক্ষেত্রে পরীক্ষা করা যাক mvn compile
:
mvn compile
এটা একটি নির্দিষ্ট লক্ষ্য, কম্পাইল লক্ষ্যে পৌঁছাতে ম্যাপ করা হয়নি।mvn compiler:compile
সুতরাং, পর্বটি প্লাগইন লক্ষ্য নিয়ে গঠিত ।
রেফারেন্সের লিঙ্ক
mvn test
ইশারা করছে package
, এবং mvn install
নির্দেশ করছে deploy
?
jar
প্লাগইনটি আসলে package
পর্যায়ে চলে। এবং পর্যায়ক্রমে এবং প্লাগইনগুলির মধ্যে স্যান্ডউইচের পমটি কিছুটা বিভ্রান্তিকর (আমি মনে করি এটির অর্থ হওয়া উচিত যে পমের মধ্যে আপনি ডিফল্ট বাইন্ডিংগুলি ছাড়াও কোন ধাপে কোন প্লাগইনগুলি কনফিগার করতে পারেন)। যদিও সাধারণ নীতিটি সঠিক।
সংজ্ঞাগুলি ম্যাভেন সাইটের পৃষ্ঠায় বিশদ সহ বিল্ড লাইফাইসাইকেলের পরিচিতি , তবে আমি সংক্ষেপে জানার চেষ্টা করেছি :
মাভেন একটি বিল্ড প্রক্রিয়াটির 4 টি আইটেম সংজ্ঞায়িত করে:
জীবনচক্র
তিন বিল্ট-ইন lifecycles (ওরফে বিল্ড lifecycles ): default
, clean
, site
। ( আজীবন রেফারেন্স )
পর্যায়
প্রতিটি জীবনচক্র গঠিত পর্যায়ক্রমে জন্য যেমন default
জীবনচক্র: compile
, test
, package
, install
, ইত্যাদি
প্লাগ লাগানো
একটি বাত্সরিক যা এক বা একাধিক লক্ষ্য সরবরাহ করে।
প্যাকেজিং প্রকারের ভিত্তিতে ( jar
, war
ইত্যাদি) প্লাগইনগুলির লক্ষ্যগুলি ডিফল্টরূপে পর্যায়ক্রমে আবদ্ধ থাকে। ( অন্তর্নির্মিত লাইফসাইकल বাইন্ডিংস )
লক্ষ্য
কার্য (ক্রিয়া) যা সম্পাদিত হয়। একটি প্লাগইনের এক বা একাধিক লক্ষ্য থাকতে পারে।
একটি POM এ প্লাগইন কনফিগার করার সময় এক বা একাধিক লক্ষ্য নির্দিষ্ট করা দরকার । অতিরিক্তভাবে, যদি কোনও প্লাগইনটির ডিফল্ট পর্যায়ে সংজ্ঞা না থাকে তবে নির্দিষ্ট লক্ষ্য (গুলি) একটি পর্যায়ে আবদ্ধ হতে পারে।
মাভেন এর সাথে আহ্বান করা যেতে পারে:
clean
, package
)<plugin-prefix>:<goal>
(যেমন dependency:copy-dependencies
)<plugin-group-id>:<plugin-artifact-id>[:<plugin-version>]:<goal>
(যেমন org.apache.maven.plugins:maven-compiler-plugin:3.7.0:compile
)এক বা একাধিক সংমিশ্রণ সহ, যেমন:
mvn clean dependency:copy-dependencies package
Build Phase
এটিকে একটি জীবনচক্রের অন্য ধাপ হিসাবে মনে করি এবং এটি আমাকে বিভ্রান্ত করে।
আমি বিশ্বাস করি একটি ভাল উত্তর ইতিমধ্যে প্রদান করা হয়, কিন্তু আমি বিভিন্ন 3 জীবন চক্র (একজন সহজ-থেকে-ফলো ডায়াগ্রাম যোগ করতে চাই build
, clean
এবং site
) এবং প্রতিটি পর্যায়ক্রমে।
সাহসী - এর পর্যায়ক্রমে সাধারণত ব্যবহৃত প্রধান পর্যায়গুলি।
generate-resources
দু'বার উপস্থিত এবং generate-sources
অনুপস্থিত।
কৃতিত্ব সন্দীপ জিন্দাল এবং প্রেমরাজকে। তাদের ব্যাখ্যাটি আমাকে এই সম্পর্কে কিছুক্ষণ বিভ্রান্ত করার পরে বুঝতে সাহায্য করে।
আমি এখানে কিছু পূর্ণ কোড উদাহরণ তৈরি করেছি এবং কিছু সাধারণ ব্যাখ্যা এখানে https://www.surasint.com/maven- Life-cycle-phase-and-goal-easy- exPLined/ এ তৈরি করেছি । আমি মনে করি এটি অন্যকে বুঝতে সাহায্য করতে পারে।
সংক্ষেপে সংক্ষেপে, আপনার একবারে তিনটিই বোঝার চেষ্টা করা উচিত নয়, প্রথমে আপনাকে এই গ্রুপগুলির মধ্যে সম্পর্কটি বোঝা উচিত:
1. লাইফ সাইকেল বনাম ফেজ
লাইফ সাইকেল ধারাবাহিকভাবে পর্যায়ের সংগ্রহ এখানে লাইফ সাইকেল রেফারেন্স দেখুন । আপনি যখন কোনও পর্বে কল করবেন তখন এটি এর আগে সমস্ত পর্বে কল করবে।
উদাহরণস্বরূপ, পরিষ্কার জীবনচক্রের 3 টি পর্যায় রয়েছে ( প্রাক-পরিষ্কার, পরিষ্কার, পরিচ্ছন্ন )।
mvn clean
এটি প্রাক-পরিষ্কার এবং পরিষ্কার কল করবে ।
২. প্লাগইন বনাম লক্ষ্য
লক্ষ্যটি প্লাগইনে কোনও ক্রিয়াকলাপের মতো । সুতরাং প্লাগইন যদি শ্রেণি হয় তবে লক্ষ্যটি একটি পদ্ধতি।
আপনি এই মত একটি লক্ষ্য কল করতে পারেন:
mvn clean:clean
এর অর্থ "ক্লিন প্লেন-এ ক্লিন লক্ষ্যকে কল করুন" (এখানে পরিষ্কার পর্বের সাথে কিছুই সম্পর্কিত নয়। "পরিষ্কার" শব্দটি আপনাকে বিভ্রান্ত করতে দেবেন না, সেগুলি একই নয়!)
৩. এখন পর্যায় ও লক্ষ্যগুলির মধ্যে সম্পর্ক:
পর্যায়ে (পূর্ব) লক্ষ্য (গুলি) এর লিঙ্ক থাকতে পারে । উদাহরণস্বরূপ, সাধারণত পরিষ্কার লক্ষ্যটি পরিষ্কার লক্ষ্যের সাথে লিঙ্ক করে। সুতরাং, আপনি যখন এই আদেশটি কল করবেন:
mvn clean
এটি প্রাক-ক্লিন ফেজ এবং পরিষ্কার পর্বকে কল করবে যা পরিষ্কার: পরিষ্কার লক্ষ্যের সাথে লিঙ্ক করে।
এটি প্রায় একই রকম:
mvn pre-clean clean:clean
আরও বিশদ এবং সম্পূর্ণ উদাহরণগুলি https://www.surasint.com/maven- Life-वारी- phase-and-goal- easy - explained/ এ রয়েছে
মাভেনের ওয়ার্কিং টার্মিনোলজির পর্যায় এবং লক্ষ্য রয়েছে।
পর্যায়: ম্যাভেন পর্বটি ক্রিয়াকলাপের একটি সেট যা 2 বা 3 গোলের সাথে যুক্ত
অসাধারণ: - আপনি যদি এমভিএন ক্লিন চালান
এই পর্যায়টি এমভিএন ক্লিন: লক্ষ্য নির্বাহ করবে
লক্ষ্য: মাভেন গোলটি পর্বের সাথে সীমাবদ্ধ
রেফারেন্সের জন্য http://books.sonatype.com/mvnref-book/references/lifecycle-sect-struct.html
নিম্নলিখিত বিল্ট-ইন বিল্ড লাইফসাইকেলগুলি নিম্নলিখিত রয়েছে:
লাইফসাইকেল ডিফল্ট -> [বৈধকরণ, সূচনা, উত্পন্ন উত্স, প্রক্রিয়া উত্স, উত্স-সংস্থান, প্রক্রিয়া-সংস্থান, সংকলন, প্রক্রিয়া-শ্রেণি, উত্পন্ন-পরীক্ষা-উত্স, প্রক্রিয়া-পরীক্ষা-উত্স, উত্পন্ন-পরীক্ষা-উত্স, প্রক্রিয়া সর্বাধিক সংস্থানসমূহ, পরীক্ষা-সংকলন, প্রক্রিয়া-পরীক্ষা-ক্লাস, পরীক্ষা, প্রস্তুতি-প্যাকেজ, প্যাকেজ, প্রাক-একীকরণ-পরীক্ষা, ইন্টিগ্রেশন-পরীক্ষা, পোস্ট-ইন্টিগ্রেশন-পরীক্ষা, যাচাই, ইনস্টল, মোতায়েন]
লাইফাইকেল পরিষ্কার -> [প্রাক-পরিষ্কার, পরিষ্কার, পোস্ট-ক্লিন]
জীবনচক্র সাইট -> [প্রাক সাইট, সাইট, পোস্ট সাইট, সাইট-মোতায়েন]
প্রবাহটি অনুক্রমিক, উদাহরণস্বরূপ, ডিফল্ট জীবনচক্রের জন্য, এটি বৈধতা দিয়ে শুরু হয় , তারপরে আরম্ভ করা এবং আরও কিছু ...
আপনি এর ডিবাগ মোড সক্ষম করে জীবনচক্রটি পরীক্ষা করতে পারেন mvn
,mvn -X <your_goal>