Mvnw এবং mvnw.cmd ফাইলগুলির উদ্দেশ্য কী?


257

যখন আমি একটি স্প্রিং বুট অ্যাপ্লিকেশন তৈরি করি তখন আমি প্রকল্পের মূলটিতে ফাইলগুলি দেখতে mvnwএবং mvnw.cmdফাইলগুলি দেখতে পেতাম । এই দুটি ফাইলের উদ্দেশ্য কী?

উত্তর:


345

এই ফাইলগুলি ম্যাভেন র‌্যাপারের । এটি গ্র্যাডেল মোড়কের মতো একইভাবে কাজ করে ।

এটি আপনাকে মাভেন ইনস্টল না করে এবং পথে উপস্থিত না করে ম্যাভেন প্রকল্প চালানোর অনুমতি দেয়। এটি যদি না পাওয়া যায় তবে সঠিক মেভেন সংস্করণটি ডাউনলোড করে (আপনার ব্যবহারকারীর হোম ডিরেক্টরিতে আমি পূর্ব পর্যন্ত জানি)।

mvnwফাইল লিনাক্স (ব্যাশ) জন্য হয় এবং mvnw.cmdউইন্ডোজ পরিবেশের জন্য নয়।


সমস্ত প্রয়োজনীয় মাভেন র্যাপার ফাইলগুলি তৈরি বা আপডেট করতে নিম্নলিখিত কমান্ডটি কার্যকর করে:

mvn -N io.takari:maven:wrapper

ম্যাভেনের আলাদা সংস্করণ ব্যবহার করতে আপনি নিম্নলিখিত রূপটি সংস্করণটি নির্দিষ্ট করতে পারবেন:

mvn -N io.takari:maven:wrapper -Dmaven=3.3.3

উভয় কমান্ড উপর ম্যাভেন প্রয়োজন PATH(ম্যাভেন পাথ যোগ binকরার Pathযদি আপনি ইতিমধ্যে mvnw আপনার প্রকল্পের মধ্যে আছে আপনি ব্যবহার করতে পারেন সিস্টেম ভেরিয়েবল দিকে) ./mvnwপরিবর্তে mvnকমান্ড হবে।


আপনার উত্তরটি খুব সহায়ক। আমি মাভেন র‍্যাপার ডকুমেন্টেশন চেক করি। আমি mvnমাভেন অপারেশনের জন্য কমান্ড ব্যবহার করছিলাম যদিও আমি ./mvnwএকই উদ্দেশ্যে ব্যবহার করতে পারি ।
shaunthomas999

2
উত্তর করার জন্য ধন্যবাদ. আপনি যখন ব্যাখ্যা করতে পারবেন এটি কখন তৈরি হয়, যেমন আপনি যখন প্রাথমিকভাবে কোনও প্রকল্প তৈরি করেন তখন কি হয়? আপনি যখন আপনার পমের পরিবর্তনগুলি মুছে ফেলুন নির্ভরতা / প্লাগইন যুক্ত করার মতো পরিবর্তনগুলি করেন তখন কি লাইন বরাবর আপডেট হবে?
Asanke

1
এবং, আপনি mvnw.cmd ফাইল যুক্ত / প্রতিশ্রুতিবদ্ধ করা উচিত?
jpganz18

হ্যা অবশ্যই. এটি আপনাকে অতিরিক্ত ইনস্টল মাভেনের বা পাথের উপরে রাখার প্রয়োজন ছাড়াই আপনার মেভেন বিল্ডটি দ্রুত চালানোর অনুমতি দেয়।
ডজ

1
উত্তরের জন্য অনেক ধন্যবাদ, এটি খুব সহায়ক ¿আমরা যখন সেভাবে কাজ করছি তখন আপনি কি মভেন সেটিংস ফাইলগুলির বহনযোগ্যতা সম্পর্কে কিছু বলতে পারেন? সালুডোস এবং আবার ধন্যবাদ।
ড্যানিয়েল হার্নানডেজ

26

কমান্ড mvnwমাভেন ব্যবহার করে যা ডিফল্টরূপে ~/.m2/wrapperপ্রথম ব্যবহারে ডাউনলোড হয় ।

মাভেন সহ ইউআরএল প্রতিটি প্রকল্পে নির্দিষ্ট করা আছে .mvn/wrapper/maven-wrapper.properties:

distributionUrl=https://repo1.maven.org/maven2/org/apache/maven/apache-maven/3.3.9/apache-maven-3.3.9-bin.zip

মাভেন সংস্করণ আপডেট বা পরিবর্তন করতে নিম্নলিখিতগুলিতে প্রার্থনা করুন ( --non-recursiveমাল্টি-মডিউল প্রকল্পগুলির জন্য মনে রাখবেন ):

./mvnw io.takari:maven:wrapper -Dmaven=3.3.9 

অথবা কেবল .mvn/wrapper/maven-wrapper.propertiesম্যানুয়ালি পরিবর্তন করুন ।

মাভেন ব্যবহার করে স্ক্র্যাচ থেকে মোড়ক তৈরি করতে (আপনার এটি ইতিমধ্যে PATHচালু রয়েছে:

mvn io.takari:maven:wrapper -Dmaven=3.3.9 

5

ম্যাভেন আবরণ প্রকল্প ম্যাভেন (অথবা যে ব্যবহারকারীদের এ সব ম্যাভেন ইনস্টল করতে না চান জন্য) একটি নির্দিষ্ট সংস্করণের প্রয়োজন জন্য একটি চমৎকার পছন্দ। অপারেটিং সিস্টেমে এর বহু সংস্করণ ইনস্টল করার পরিবর্তে আমরা কেবলমাত্র প্রকল্প-নির্দিষ্ট র‍্যাপার স্ক্রিপ্টটি ব্যবহার করতে পারি।

এমভিএনডব্লিউ: এটি সম্পূর্ণরূপে ইনস্টলড মাভেনের জায়গায় ব্যবহারযোগ্য একটি ইউনিক্স শেল স্ক্রিপ্ট

mvnw.cmd : এটি উইন্ডোজ পরিবেশের জন্য


ব্যবহারের ক্ষেত্রে

মোড়কের বিভিন্ন অপারেটিং সিস্টেমের সাথে কাজ করা উচিত যেমন:

  • লিনাক্স
  • ওএসএক্স
  • উইন্ডোজ
  • সোলারিস

এর পরে, আমরা ইউনিক্স সিস্টেমের জন্য আমাদের লক্ষ্যগুলি এভাবে চালাতে পারি:

./mvnw clean install

এবং ব্যাচের জন্য নিম্নলিখিত কমান্ড:

./mvnw.cmd clean install

যদি আমাদের মোড়কের বৈশিষ্ট্যগুলিতে নির্দিষ্ট মাভেন না থাকে তবে এটি ডাউনলোড $USER_HOME/.m2/wrapper/distsকরে সিস্টেমের ফোল্ডারে ইনস্টল করা হবে।


মাভেন র‍্যাপার প্লাগইন

একটি সাধারণ স্প্রিং বুট প্রকল্পে অটো ইনস্টলেশন করতে মাভেন র্যাপার প্লাগইন

প্রথমত, আমাদের প্রকল্পের মূল ফোল্ডারে যেতে হবে এবং এই আদেশটি চালাতে হবে:

mvn -N io.takari:maven:wrapper

আমরা মাভেনের সংস্করণটিও নির্দিষ্ট করতে পারি:

mvn -N io.takari:maven:wrapper -Dmaven=3.5.2

অপশন-এন এর অর্থ অনন-রিকার্সিভ যাতে র্যাপারটি কেবলমাত্র কোনও ডিরেক্টরিের ক্ষেত্রে নয়, কেবল বর্তমান ডিরেক্টরিটির মূল প্রকল্পে প্রয়োগ করা হবে।


2

এখন অবধি সর্বোত্তম বিকল্পটি হ'ল কোনও খাঁজ পাত্রে কোনও বিল্ডার সরঞ্জাম হিসাবে ব্যবহার করবে। এর mvn.shমতো স্ক্রিপ্টই যথেষ্ট হবে:

#!/bin/bash
docker run --rm -ti \
 -v $(pwd):/opt/app \
 -w /opt/app \
 -e TERM=xterm \
 -v $HOME/.m2:/root/.m2 \
 maven mvn "$@"

7
এটি ওপি প্রশ্নের উত্তর দেয় না, এটি কেবল একটি বিকল্প প্রস্তাব দেয়
আহমাদজাদ

2
মাভেন র‌্যাপারের খুব প্রাথমিক ধারণাটি এই প্রকল্পের জন্য মেভেনের সঠিক সংস্করণটি ঘোষণা করা। এবং একটি বোনাস ম্যানুয়ালি ম্যাভেন ইনস্টল করার প্রয়োজনীয়তা এড়িয়ে চলেছে। আপনার পদ্ধতিটি কেবল সংস্করণ সমস্যা সমাধান করতেই মিস করে না তবে স্থানীয়ভাবে ইনস্টল করা আরও একটি সরঞ্জাম প্রয়োজন।
সর্বোচ্চ

2
এছাড়াও নোট করুন যে এটি ব্যবহারকারীর নিজস্ব স্থানীয় মাভেন সংগ্রহস্থলকে ডকারের উদাহরণে মাউন্ট করে। সাধারণত এটি রুট হিসাবে চলে, তাই ডকারাইজড মেভেন উদাহরণ দ্বারা রচিত যে কোনও কিছুই লিনাক্সের অধীনে রুটের মালিকানাধীন। এটি অগত্যা কাম্য নয়। আমি ডকার বিল্ড ইনস্ট্যান্সে অ্যাক্সেসযোগ্য একটি সঠিকভাবে সেট আপ নেক্সাস উদাহরণটি কম বেদনাদায়ক ছিল, বিশেষত যদি আপনি পুনরুত্পাদনযোগ্য বিল্ডগুলি চান।
থোরবজর্ন রাভন অ্যান্ডারসন

এটি অনেক আগে ছিল, তবে আমি এখনও এইভাবে পছন্দ করি। মার্ভেন সংস্করণ সম্পর্কে, চিত্র ট্যাগগুলি এটি সরবরাহ করে (ডকার হাবের খাঁটি পৃষ্ঠাটি দেখুন)। মূল মালিকানার ক্ষেত্রে, এটি কেবল ডকার ডেস্কটপে ঘটে না - তবে লিনাক্স বাক্সে অবশ্যই ঘটে থাকে (এবং অবশ্যই নোডগুলি তৈরি করে)। একটি ছোট কৌশল এই ক্ষেত্রে বর্তমান ইউআইডি "জোর" করতে পারে (-উ আর্গুমেন্ট), সুতরাং সমস্যাটি পরিচালনা করা হয়। তবে সমস্ত উপায়ে আমি এই পদ্ধতির আদেশগুলির প্রসারকে আরও ভাল দেখতে পেয়েছি। বিশেষত বিল্ড নোডগুলিতে ডকার যাইহোক সর্বব্যাপী।
আন্দ্রে

1
(অবিরত) ওল্ড স্কুল জেনকিনস সেটআপ এবং মানসিকতা এই ধরণের জিনিস নিয়ে যায়। আধুনিক সিআই / সিডি সরঞ্জামগুলি বিপরীতভাবে কাজ করে: আপনি কেবল একটি বিল্ড ধারক বেছে নিন। তবে এটাই আমার মতামত।
আন্দ্রে
আমাদের সাইট ব্যবহার করে, আপনি স্বীকার করেছেন যে আপনি আমাদের কুকি নীতি এবং গোপনীয়তা নীতিটি পড়েছেন এবং বুঝতে পেরেছেন ।
Licensed under cc by-sa 3.0 with attribution required.