What is Maven? | ماون چیه؟
توضیحات جلسه
جزوه و مستندات
مفاهیم کلیدی
Maven
Maven یک ابزار اتوماسیون ساخت (Build Automation) و مدیریت وابستگی است که عمدتاً برای پروژههای جاوا استفاده میشود تا فرآیندهای کامپایل، تست، بستهبندی و مدیریت کتابخانهها را استاندارد و خودکار کند.
Dependency
Dependency به کتابخانهها یا کدهای خارجی (External Libraries) گفته میشود که پروژه برای عملکرد صحیح به آنها وابسته است؛ مانند کتابخانههای کار با فایلهای اکسل یا توابع کمکی رشتهها.
pom.xml
این فایل مهمترین بخش در یک پروژه Maven است و مخفف Project Object Model میباشد. تمام تنظیمات پروژه، اطلاعات نسخه و لیست Dependencyها در این فایل با فرمت XML تعریف میشوند.
Jar File
Jar File فرمت استاندارد برای توزیع کتابخانهها در جاوا است که شامل کدهای کامپایل شده (Bytecode) و منابع مورد نیاز میباشد.
Maven Central Repository
Maven Central Repository یک مخزن آنلاین و مرکزی است که تقریباً تمام کتابخانههای عمومی جاوا در آن قرار دارند و Maven بهصورت خودکار وابستگیها را از این مخزن دانلود میکند.
Local Repository
Local Repository پوشهای در سیستم کاربر (معمولاً پوشه .m2) است که Maven کتابخانههای دانلود شده را در آن ذخیره (Cache) میکند تا در دفعات بعدی یا استفاده در پروژههای دیگر، نیازی به دانلود مجدد نباشد.
Build Lifecycle
Build Lifecycle مجموعهای از مراحل استاندارد در Maven (مانند compile ،test ،package و install) است که به ترتیب برای ساخت و آمادهسازی نهایی پروژه اجرا میشوند.
نکات مهم مصاحبهای
چرا به جای مدیریت دستی فایلهای jar از Maven استفاده میکنیم؟
مدیریت دستی در پروژههای بزرگ با دهها کتابخانه بسیار دشوار است. Maven قابلیتهایی نظیر دانلود خودکار، مدیریت ورژنها، حل تداخل نسخهها و اشتراکگذاری آسان پروژه با دیگران را فراهم میکند.
نقش فایل pom.xml در یک پروژه چیست؟
این فایل بهعنوان شناسنامه و نقشه راه پروژه عمل میکند. تمام وابستگیها، پلاگینهای مورد نیاز برای ساخت و تنظیمات مربوط به نسخه جاوا در این فایل مدیریت میشوند.
تفاوت ریپازیتوری Local و Central در Maven چیست؟
Central Repository یک بانک اطلاعاتی آنلاین است که وابستگیها از آنجا دانلود میشوند؛ در حالی که Local Repository روی سیستم شما قرار دارد و نسخهای از کتابخانهها را نگه میدارد تا سرعت کار افزایش یابد و در نبود اینترنت نیز امکان Build پروژه فراهم باشد.
فاز package در لایفسایکل Maven چه کاری انجام میدهد؟
این فاز کدهای کامپایل شده را برداشته و در قالب یک فایل قابل توزیع (معمولاً .jar) در پوشهای به نام target قرار میدهد.
بیشتر بدانید
ساختار استاندارد پوشهها
Maven یک ساختار مشخص را تحمیل میکند؛ کدهای اصلی همیشه در src/main/java و منابع غیرکدی (مانند فایلهای تنظیمات) در src/main/resources قرار میگیرند. این استاندارد باعث میشود هر برنامهنویسی با مشاهده پروژه شما، سریعاً ساختار آن را درک کند.
IDE Tip
در محیط IntelliJ IDEA یک تب اختصاصی به نام Maven در سمت راست وجود دارد که از طریق آن میتوانید بدون تایپ دستور، فازهای مختلف Lifecycle مانند clean (برای پاک کردن فایلهای خروجی قبلی) یا package را اجرا کنید.
مشکل اشتراکگذاری پروژه
وقتی از Maven استفاده میکنید، نیازی به ارسال فایلهای حجیم کتابخانهها برای همکارانتان نیست. تنها با در اختیار داشتن فایل pom.xml، سیستم آنها میتواند بهصورت خودکار همه وابستگیها را آمادهسازی کند.
