Maven Local Dependency
📖توضیحات درس
📄جزوه
مفاهیم کلیدی
-
Local Repository مخزنی در سیستم محلی (معمولاً پوشه
.m2) که Maven تمامی Dependencyها را در آن ذخیره میکند. این کار باعث میشود تا برای استفادههای بعدی، نیازی به دانلود مجدد از اینترنت نباشد و همچنین بتوان پروژههای شخصی را برای استفاده در سایر پروژههای محلی در آن قرار داد. -
Maven Install یکی از مراحل Life Cycle در Maven است که پروژه را بیلد کرده و فایل خروجی (مانند
JAR) را به همراه فایلpom.xmlدر Local Repository کپی میکند. این کار اجازه میدهد تا پروژههای دیگر روی همان سیستم بتوانند از این پروژه به عنوان یک Dependency استفاده کنند. -
Maven Package دستوری که کدها را کامپایل کرده و آنها را در قالب یک فایل قابل توزیع (مثل
JAR) بستهبندی میکند. این فایل صرفاً در پوشهtargetهمان پروژه قرار میگیرد. -
Dependency کدها یا کتابخانههای آمادهای که توسط دیگران (یا خودمان در پروژهای دیگر) نوشته شدهاند و ما برای توسعه برنامه خود به آنها نیاز داریم تا از بازنویسی کدها و کپی-پیست کردن جلوگیری کنیم.
-
Group ID شناسهای که مشخص میکند پروژه متعلق به کدام گروه یا سازمان است. معمولاً از ساختار معکوس دامنه (مثل
ir.farzadafi) برای نامگذاری آن استفاده میشود و مسیر ذخیرهسازی در مخزن را تعیین میکند. -
Artifact ID نام منحصربهفرد پروژه یا کتابخانه که در کنار Group ID برای شناسایی دقیق آن در مخازن Maven استفاده میشود.
موارد مصاحبه ای
-
تفاوت بین دستور
packageوinstallدر Maven چیست؟ دستورpackageفقط فایل خروجی را در پوشهtargetپروژه فعلی میسازد، اما دستورinstallاین فایل را به مخزن محلی سیستم (.m2) منتقل میکند تا برای سایر پروژههای موجود در آن سیستم قابل شناسایی و استفاده باشد. -
چرا استفاده از Local Dependency بهتر از کپی-پیست کردن کد است؟ کپی-پیست کردن باعث تکرار کد و دشواری در بهروزرسانی میشود. با تبدیل کد به یک Dependency محلی، مدیریت نسخهها آسانتر شده، ساختار پروژه تمیزتر میماند و کد به صورت یک کتابخانه (Library) استاندارد در دسترس خواهد بود.
-
نقش فایل
pom.xmlدر اشتراکگذاری یک کتابخانه چیست؟ این فایل حاوی مختصات پروژه (groupId,artifactId,version) است. Maven از این اطلاعات استفاده میکند تا بفهمد کتابخانه را در کدام مسیر از مخزن ذخیره کند و پروژههای دیگر با چه آدرسی باید آن را فراخوانی کنند.
مثال کاربردی
در این آموزش، مدرس برای حل مشکل کپی کردن کلاس DynamicArray بین پروژههای مختلف، مراحل زیر را طی کرد:
۱. ایجاد پروژه کتابخانه: یک پروژه Maven جدید برای DynamicArray ایجاد شد. کدها در پکیجبندی مناسب قرار گرفتند و در فایل pom.xml شناسههای پروژه تعریف شد.
۲. نصب در مخزن محلی: با اجرای دستور clean install در IDE، یک فایل JAR از این پروژه ساخته شد و به صورت خودکار در پوشه .m2 سیستم قرار گرفت.
۳. استفاده در پروژه جدید: یک پروژه کاملاً مجزا ساخته شد. برای استفاده از DynamicArray بدون کپی کردن فایل آن، صرفاً مشخصات کتابخانه (Group ID و Artifact ID) در بخش <dependencies> فایل pom.xml پروژه جدید اضافه شد.
۴. نتیجه: با یک Reload ساده در Maven، کتابخانه شخصی به لیست External Libraries پروژه اضافه شد و کلاسهای آن به راحتی import و مورد استفاده قرار گرفتند.
بیشتر بدانید
-
نکته پکیجبندی و Import نام پکیجی که داخل کدهای Java تعریف میکنید (مثلاً
package ir.farzadafi) تعیینکننده نحوهimportکردن آن کلاس در پروژههای دیگر است. اماgroupIdدر فایلpom.xmlصرفاً مسیر ذخیرهسازی فیزیکی فایلها را در مخزن Maven مدیریت میکند. برای نظم بهتر، توصیه میشود این دو با هم هماهنگ باشند. -
IDE Tip در محیط IntelliJ، تب Maven در سمت راست محیط کاربری قرار دارد که به شما اجازه میدهد بدون تایپ دستورات، مراحل Life Cycle مانند
cleanیاinstallرا تنها با دابل کلیک اجرا کنید. -
مدیریت نسخهها اگر تغییری در کد کتابخانه خود ایجاد کردید، حتماً باید مجدداً دستور
installرا اجرا کنید تا نسخه موجود در Local Repository بهروز شود و پروژه اصلی بتواند تغییرات جدید را دریافت کند. -
Nexus و مخازن شرکتی در محیطهای کاری بزرگ و تیمی، به جای استفاده از Local Repository (که فقط روی سیستم خودتان است)، از ابزارهایی مثل Nexus استفاده میشود تا لایبرریهای توسعهداده شده توسط یک عضو تیم، برای همه اعضای شرکت در دسترس باشد.
