Farzad Afi Logo

FarzadAfi

آموزش تخصصی برنامه نویسی

Maven Local Dependency

📖توضیحات درس

🎥 این ویدیو قسمت پنجاه و یکم از بوت‌کمپ رایگان جاواست. 📚 Maven – ساخت کتابخانه و اضافه کردن آن به‌عنوان وابستگی (Local Dependency) در این جلسه با یکی از مباحث مهم و کاربردی Maven آشنا می‌شویم: ساخت یک کتابخانه جاوا و استفاده از آن به‌عنوان وابستگی در پروژه‌های دیگر. این رویکرد در پروژه‌های ماژولار بسیار کاربردی است و کمک می‌کند کدهای قابل استفاده مجدد را به‌صورت منظم در پروژه‌های مختلف استفاده کنیم. در این ویدیو یاد می‌گیریم: - چگونه یک کتابخانه ساده جاوا (برای مثال ساختار داده آرایه داینامیک) با Maven ایجاد کنیم - چگونه این کتابخانه را در یک پروژه دیگر به‌صورت Local Dependency اضافه کنیم - مزایای استفاده از وابستگی‌های محلی در توسعه پروژه‌های ماژولار - مرور نهایی مراحل انجام‌شده و جمع‌بندی نکات مهم 💬 گروه پرسش و پاسخ تلگرام: @programmingByFarzadAfi 💬 گروه پرسش و پاسخ بله: @programming_by_farzadafi اگر سوالی داشتی، می‌تونی در گروه بپرسی؛ من یا مربی‌های گروه پاسخ‌گو هستیم 💬 🎯 بوت‌کمپ رایگان جاوا – آموزش پروژه‌محور برای یادگیری عمیق و آمادگی ورود به بازار کار.
00:14:43🎯رایگان

📄جزوه

مفاهیم کلیدی

  • 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 استفاده می‌شود تا لایبرری‌های توسعه‌داده شده توسط یک عضو تیم، برای همه اعضای شرکت در دسترس باشد.