maven : یکی از پر کاربردترین ابزار های جاوا برای package بندی , build , deploy , compile , test , document generation پروژه ها است که باعث میشود همه توسعه دهنده ها با استفاده از maven از یک استاندارد پیروی کنند و از اعمال سلیقه هر توسعه دهنده تا حد زیادی جلوگیری میشود و توسعه دهنده بعدی میتواند با ساختار پروژه راحت ارتباط بر قرار میکند
plugin ها : در maven تعداد بسیار زیادی plugin برای کارهای مختلف وجود دارد ما نیز میتوانیم پلاگین مورد نیاز خودمان را هم بنویسیم
Archetype : به مشخصه پروژه میپردازد و کمک میکند ساختار پروژه را ایجاد بکنیم و شامل حداقل سه جزییات groupid , artifactid , version است
- groupid همان packaging ما است که مشخص میکنیم
- artifactid اسم پروژه است که در انتهای packaging ما قرار میگیرد
- version هم طبق semantic versioning شماره ورژن جاری را مشخص میکنیم
repository : در maven بصورت محلی یک repository روی دیسک ایجاد میکند و در دفعات بعد که یک کتابخانه را بخواهیم استفاده کنیم دوباره آنرا دانلود نمیکند
بعد از دانلود و خارج کردن از حالت فشرده میبایست مسیر آنرا بصورت local variable به سیستم معرفی کنیم
export MVN_HOME=/opt/maven
export PATH=$MVN_HOME/bin:$PATH
config : برای ست کردن config مورد نظر باید در آدرس MVN_HOME/conf/setting.xml فایل xml را ویرایش کنیم
pom.xml : در این فایل کلیه تنظیمات و مشخصات و dependency های پروژه در آن وجود دارد که بعد از ایجاد پروژه با maven در اختیار ما خواهد بود و اگر بخواهیم تغییری را اعمال کنیم از طریق این فایل میتوانیم
در تگ dependencies میتوانیم کتابخانه های مورد نیاز و وابستگی ها را اضافه کنیم که هر وابستگی در تگ dependency قرار میگیرد و شامل حداقل تگ های داخلی groupid , artifactid , version , scope است با scope مشخص میکنیم که این کتابخانه در چه مرحله ای از پروژه قرار است مورد استفاده قرار گیرد که شامل موارد زیر است :
- test : فقط در جریان توسعه نرم افزار که همراه با تست است آن کتابخانه را استفاده میکند مثل junit
- providen : یعنی در آینده این کتابخانه توسط ما یا عامل دیگری برای پروژه قراهم خواهد شد و طی فرایند کامپایل و ساخت jar فایل انرا اضافه نمیکند مثل کتابخانه servlet که در servlet container ها موجود است
- compile : بصورت پیش فرض روی این گزینه ست شده است و یعنی این کتابخانه را هنگامی که پروژه کامپایل و ساخته میشود استفاده کند
- runtime : مشابه provided است
- system : که اشاره میکند این کتابخانه در سیستم موجود است و باید به مسیر کتابخانه های پروژه آنرا اضافه کند
دستورات maven :
قبل از پرداختن به دستورات maven در محیط ترمینال اطمینان حاصل کنید که شاخه جاری ای که در آن قرار گرفته اید شاخه اصلی پروژه است و فایل pom.xml موجود است چون maven تنها میتواند از روی این فایل کار کند و دستورات را روی پروژه اعمال کند
mvn clean : شاخه target و فایل های داخلش را که مربوط به build گرفتن پروژه بوده را پاک میکند و پروژه را اماده build میکند
mvn package : این دستور پروژه را compile میکند و آنرا build میکند و شاخه target را هم میسازد
mvn clean install : این دستور علاوه بر compile کردن آنرا در لیست مخزن محلی قرار میدهد
test skip کردن : در طی فرآیند compile و build تست هم انجام میشود که لاگ آنرا در کنسول میتوان دید برای انجام نشدن تست میبایست سویچ مورد نظر را اعلام کرد : mvn clean install -DskipTests=true