একই সরঞ্জাম, বিভিন্ন ভাষা?
জাভা জেএসের জন্য যেমন এনপিএম, তেমনই জাভা সর্বাধিক জনপ্রিয় বিল্ড এবং নির্ভরতা রেজোলিউশন সরঞ্জাম Ma তবে এটি অন্য ভাষার জন্য একই সরঞ্জাম নয়। জাভা এবং জেএস বিল্ডের মধ্যে স্পষ্টতই বিশাল পার্থক্য রয়েছে এবং মাভেন পরিচালিতভাবে এই পার্থক্যগুলি সরাসরি দৃশ্যমান। উদাহরণস্বরূপ, অনেক জেএস সরঞ্জামগুলি কিছু ভারী-উত্তোলন করতে গিটের উপর নির্ভর করে, মাভেন কাস্টম ফাইল সিস্টেম ভিত্তিক মাভেন সংগ্রহস্থলগুলির সাথে কাজ করে, যেমন মাভেন গিটের পূর্বাভাস দেয় এবং বাইনারি শিল্পকলাগুলি পরিচালনা করতে হবে, যা গিট historতিহাসিকভাবে ভাল পরিচালনা করতে পারেনি। মাভেনে উত্স এবং বাইনারিগুলির মধ্যে স্পষ্ট বিভাজন রয়েছে, যখন তারা জেএস বিশ্বের প্রায়শই একই জিনিস থাকে।
ম্যাভেন বেসিক
মাভেন তার শুদ্ধতম আকারে একটি ঘোষিত মডেল অনুসরণ করে, যেখানে pom.xml
(অনুরূপ package.json
) বিল্ডের বিভিন্ন বৈশিষ্ট্য সংজ্ঞায়িত করে তবে এতে কোনও স্ক্রিপ্ট নেই। অসুবিধাটি হ'ল স্ক্রিপ্টগুলি ব্যবহার না করেই বিল্ডের কিছু দিকগুলি সূক্ষ্ম-টিউন করা একটি চ্যালেঞ্জ হতে পারে কারণ আপনাকে প্লাগিনগুলির উপর নির্ভর করতে হবে। সুবিধাটি হ'ল কেবলমাত্র দেখে অন্য বিল্ডগুলি বোঝা আরও সহজ হতে পারে pom.xml
কারণ তারা সাধারণত খুব বেশি স্বনির্ধারণ না করে একই পন্থা অনুসরণ করে। গ্রেডল একটি জনপ্রিয় গ্রোভি ভিত্তিক সরঞ্জাম যা মাভেন স্ট্যান্ডার্ড এবং কনভেনশনগুলির শীর্ষে নির্মিত এবং বিশেষত pom.xml
এই "কোনও স্ক্রিপ্ট নয়" বাধা সরল করার জন্য এবং ডিজাইন করা হয়েছে ।
আপনার নির্ভরতা উল্লেখ করা
একইভাবে package.json
, আপনি pom.xml
সরাসরি আপনার নির্ভরতা নিয়ে কাজ করবেন না , বরং নির্ভরতা স্থানাঙ্কগুলি সংজ্ঞায়িত করুন এবং আপনার বিল্ড সরঞ্জামটিকে বাকিগুলি পরিচালনা করতে দিন। মাভেনে এই সমন্বয়গুলির মূল ফর্মটি হ'ল জিএভি (গ্রুপআইডি, আর্টিফ্যাক্টআইডি, সংস্করণ)।
ফ্ল্যাট নির্ভরতা গাছ?
অন্য উত্তরের মন্তব্যের ভিত্তিতে, মাভেন "ফ্ল্যাট নির্ভরতা ট্রি" সরবরাহ করে, "নেস্টেড নির্ভরতা ট্রি" নয় যা এনপিএম ডিফল্টরূপে সরবরাহ করে। মাভেন একই নির্ভরতার একাধিক সংস্করণকে অনুমতি দেয় না। যদি এটি ঘটে থাকে যে বিভিন্ন সংস্করণে অনুরোধ করা হয়েছে তবে মাভেন একটি একক সংস্করণ বেছে নিতে নির্ভরতা রেজোলিউশন ব্যবহার করে । এর অর্থ হ'ল কখনও কখনও আপনার ট্রানজিটিভ নির্ভরতাগুলি প্রয়োজনের তুলনায় আলাদা সংস্করণ পাবে তবে এটি পরিচালনা করার উপায় রয়েছে। যাইহোক, এই সীমাবদ্ধতা জাভা থেকে এসেছে, মাভেন নয়, জাভাতে (সাধারণত) কোনও শ্রেণি লোডার ক্লাসপথে একাধিক সংজ্ঞা পাওয়া গেলেও কেবলমাত্র একক শ্রেণির সংজ্ঞা অ্যাক্সেস সরবরাহ করবে। যেহেতু জাভা এটি পরিচালনা করতে খুব ভাল নয়, তাই মাভেন প্রথমে এই দৃশ্যটি এড়াতে চেষ্টা করেছিলেন।
দ্রষ্টব্য: এনএমপি ভি 3 সাল থেকে নির্ভরতা সমতল হয়। বিকল্প প্যাকেজ ম্যানেজার সুতাও একই কাজ করে।
পরিপক্কতা
তদ্ব্যতীত, মাভেন এনপিএমের তুলনায় যথেষ্ট বয়স্ক, এর একটি বৃহত্তর ব্যবহারকারী বেস রয়েছে, বিপুল সংখ্যক কাস্টম প্লাগইন রয়েছে এবং এ পর্যন্ত সম্ভবত সামগ্রিকভাবে আরও পরিপক্ক হিসাবে বিবেচিত হতে পারে। অ্যান্ড্রয়েডের মতো অন্যান্য ভাষা বা নির্দিষ্ট পরিবেশকে পরিচালনা করার জন্য প্লাগইন থাকায় কখনও কখনও ম্যাভেন জাভাবিহীন বা এমনকি বহুগ্লোট প্রকল্পের জন্য ব্যবহৃত হয়। এমন প্লাগইন রয়েছে যা মাভেন এবং অন্যান্য বিল্ড সরঞ্জামগুলি যেমন ফ্রন্টএন্ড- মাভেন -প্লাগইন যা একাধিক জেএস বিল্ড সরঞ্জামগুলি পরিচালনা করে।