Maven Lifycycle
📖توضیحات درس
📄جزوه
مفاهیم کلیدی
- Maven Build Lifecycle
مجموعهای از مراحل گامبهگام و استاندارد که یک پروژه را از سورسکد خام به یک محصول نهایی و قابل انتشار تبدیل میکند.
- Phase
هر یک از مراحل مشخص در چرخه حیات (مانند کامپایل یا تست) که وظیفه خاصی را بر عهده دارد.
- Bytecode
نسخه کامپایل شده کدهای جاوا با فرمت .class که توسط ماشین مجازی جاوا (JVM) قابل اجراست.
- Local Repository (.m2)
پوشهای در سیستم محلی توسعهدهنده که Maven کتابخانههای دانلود شده و پروژههای نصب شده را در آن ذخیره میکند.
- Artifact
خروجی نهایی پروژه (معمولاً با فرمت JAR یا WAR) که دارای مشخصاتی مثل artifactId و version است.
نکات مهم مصاحبهای
-
تفاوت بین فازهای Install و Deploy چیست؟
فازinstallفایل نهایی (JAR) را در مخزن محلی سیستم شما (.m2) کپی میکند تا در پروژههای دیگر خودتان استفاده کنید، اماdeployآن را به یک مخزن راه دور (Remote Repository) میفرستد تا سایر توسعهدهندگان در دنیا به آن دسترسی داشته باشند. -
فاز Clean چه کاربردی دارد و چرا قبل از بیلد جدید توصیه میشود؟
این فاز پوشهtarget(خروجیهای قبلی) را حذف میکند. این کار تضمین میکند که کدهای قدیمی یا فایلهای بیلد قبلی با بیلد جدید تداخلی نداشته باشند و فرآیند از صفر و به صورت سالم شروع شود. -
اگر فاز Validate با خطا مواجه شود چه اتفاقی میافتد؟
فرآیند بیلد بلافاصله متوقف میشود. این فاز وظیفه دارد صحت ساختار پروژه، وجود تنظیمات حیاتی درpom.xmlو در دسترس بودن وابستگیها (Dependencies) را قبل از هر اقدامی چک کند.
مثال یا سناریوی کاربردی
در ویدیو فرآیند ساخت یک کتابخانه به صورت عملی نمایش داده شده است:
۱. ابتدا با فاز validate بررسی میشود که پارامترهایی مثل artifactId در فایل تنظیمات موجود باشند. (مثلاً با حذف این پارامتر، بیلد متوقف میشود).
۲. در مرحله compile کدها از مسیر src/main/java خوانده شده و به بایتکد تبدیل شده و در پوشه target/classes قرار میگیرند.
۳. در مرحله package این بایتکدها به همراه منابع دیگر بستهبندی شده و یک فایل با پسوند .jar در پوشه target ساخته میشود. نام این فایل ترکیبی از نام پروژه و ورژن آن است.
بیشتر بدانید
- استفاده از ترمینال
علاوه بر استفاده از منوهای گرافیکی در IDEهایی مثل IntelliJ، میتوان تمام این مراحل را با دستورات متنی اجرا کرد. برای مثال دستور mvn clean package همزمان پوشه قبلی را پاک کرده و فایل JAR جدید را میسازد.
- دیکامپایل کد
محیطهای توسعه (IDE) معمولاً قابلیت این را دارند که فایلهای کامپایل شده (.class) را به صورت خودکار دیکامپایل کرده و کدی مشابه سورسکد اصلی به شما نمایش دهند تا بتوانید خروجی را بررسی کنید.
