# فناوری جاوا > برنامه‌نویسی جاوا >  تاپیک اختصاصی Maven

## L u k e

سلام
به نظر من اگه واسه هر مبحثی توی جاوا یک تاپیک اصلی داشته باشیم خیلی بهتره اینجوری همه ی اطلاعات در مورد اون مبحث رو یه جا می کنم و واسه کاربرایی که می خوان تازه شروع کنن خیلی بهتره

-----------------------------------------------------------------------------------------------------------------------

سایت سازنده :


```
http://maven.apache.org/
```

لینک دانلود ( ورژن 3.0.3 ) : 


```
http://apache.mirrors.airband.net/maven/binaries/apache-maven-3.0.3-bin.zip
```

----------


## L u k e

*Maven چیست ؟*

Maven  یک ابزار مدیریت و تعریف پروژه بر پایه مفهوم POM - Project Object Model  می باشد. Maven به زبان Yiddish (زبان یهودیان اشکنازی در هزار سال پیش)  بمعنی مخزن دانش می باشد.
Maven یک روش جامع برای مدیریت پروژه از زمان کامپایل تا انتشار تا مستند  سازی تا همکاری تیمی فراهم می سازد ، در یک جمله Maven یک چارچوب مدیریت  پروژه (Project Management Framework) می باشد.

اهداف Maven

آسان سازی فرایند buildفراهم سازی یک سیستم build یکپارچهفراهم سازی اطلاعات کیفی پروژهفراهم سازی دستورالعمل هایی برای استفاده مجدد از بهترین تجربه های توسعهامکان افزودن قابلیت های جدید به پروژه بصورت نامحسوس
Maven چه چیزی هست و چه چیزی نیست ؟ یک ابزار build نیست ، یک چارچوب  اسکریپت نویسی نیست ، Maven را نمی توان با چند جمله به سادگی تشریح کرد ،  Maven ترکیبی از ایده ها ، استانداردها و نرم افزار است. پس Maven چیست ؟


 مجموعه ای از استانداردهای buildیک مدل برای مخزن محصولات (Artifact Repository) (مانند jar فایل ها)یک موتور نرم افزاری که وظیفه مدیریت و تعریف پروژه ها را بر عهده داردتعریف یک استاندارد چرخه کار برای build ، تست و deploy خروجی پروژهفراهم کردن یک Framework برای استفاده مجدد از تجربیات خوب یک پروژه برای تمامی پروژه های (در قالب ایجاد plug-in)
*نصب و راه اندازی Maven*

ابتدا باید از این لینک نسخه 2.2.1 Maven (یا آخرین نسخه پایدار 2) را دانلود کنید.فایل zip دانلود شده را در یک مکان مشخص unzip کنید (برای مثال در شاخه  C:\Program Files\Apache Software Foundation\apache-maven-2.1.1) از این  پس این دایرکتوری را با نام محل نصب Maven می شناسیم. یک environment variable با نام M2_HOME و مقدار دایرکتوری محل نصب Maven ایجاد کنید.دایرکتوری bin که درون محل نصب Maven قرار دارد را درون PATH سیستم  عامل قرار دهید (این عملیات ممکن است برای هر سیستم عامل متفاوت باشد) با  این کار دستورات Maven در هر دایرکتوری که باشید در command line به  دستورات Maven دسترسی خواهید داشت.بمنظور اینکه مطمئن شوید مراحل نصب Maven را درست انجام داده اید درون  command line دستور mvn --version را اجرا کنید در صورتی که پیغام مناسب را  دریافت کردید (پیغامی حاوی نسخه JDK ، نسخه Maven و نام سیستم عامل و...)  می توانید کار با Maven را برروی سیستم خود آغار کنید.

*ایجاد اولین پروژه Maven*
بمنظور ایجاد اولین پروژه Maven شما باید از مکانیزم Maven Archetype استفاده کنید.

1- یک دایرکتوری برای پروژه خود ایجاد کنید (برای مثال C:\Maven-Project)  2- در command line درون دایرکتوری ایجاد شده در مرحله قبل رفته و دستور زیر را اجرا کنید:




```
mvn archetype:create -DgroupId=com.mycompany.app -DartifactId=my-app
```

 3- پس از اجرای دستور Maven یکسری Artifact (محصولات) مورد نیاز خود را از  اینترنت دانلود کرده و یک دایرکتوری با نام my-app (نامی که شما برای  پروژه خود در نظر گرفته اید) درون دایرکتوری C:\Maven-Project ایجاد می کند  که حاوی پروژه Maven شما می باشد. ساختار این دایرکتوری بشکل زیر می باشد:

شاخه src حاوی تمامی چیزهایی است که شما برای build , test , مستندسازی و  deploy پروژه نیاز دارید. در حال حاضر پروژه شما فقط یک فایل اجرایی (  App.java ) نمونه ، یک فایل تست (AppTest.java بر اساس کتابخانه junit) و  یک فایل pom که ساختار پروژه شما را تعریف کرده است.

*کامپایل source پروژه*
شما می توانید به راحتی و با اجرای دستور زیر در command line پروژه خود را  کامپایل کنید (این دستور حتما باید در شاخه ای ایجاد شود که فایل pom  پروژه در آن قرار دارد).


```
C:\mvnbook\my-app> mvn compile
```

پس از اجرای این دستور درون دایرکتوری پروژه شما یک دایرکتوری با نام  target ایجاد می شود که درون آن یک دایرکتوری classes وجود دارد که فایل  های کامپایل شده پروژه شما درون آن قرار دارد.

در قسمت های بعدی به تشریح فازهای یک پروژه Maven ، استفاده از پلاگین های Maven و... خواهیم پرداخت...


منبع : javafa.com

----------


## L u k e

من اطلاعات کمی در مورد Maven دارم ولی تصمیم گرفتم که ازش استفاده کنم
می دونم که یه ابزار برای ساخت و مدیریت پروژست ولی دقیقا نمی دونم چه امکاناتی داره و آیا واقعا لازمه از این ابزار ها برای مدیریت پروژه استفاده کرد
کسایی که با Maven کردند لطف کنند ویژگی هاشو بگن ببینیم قزیه از چه قراره

----------


## فائزه-ق

سلام
دوست عزیز حالا چطور میشه این فایل کامپایل شده ماون رو در eclipse اجرا کرد؟

----------


## L u k e

اگه منظورتون اینه که چطور می شه یه پروژه maven رو با eclipse باز کرد ؟
من با Netbeans کار می کنم ولی اینجا قشنگ توضیح داده :
http://www.mkyong.com/maven/how-to-c...t-eclipse-ide/

----------


## فائزه-ق

البته من خیلی تازه کارم ولی تا جائی که فهمیدم در کناز تغییراتی که در لینکی که شما گذاشتین یک پروژه ماون ایجاد میکنه فولدری هم به نام target ایجاد میکنه که فایل کامپایل شده جاوا را در آن قرار میدهد. این لینک هم توضیح کامل در مورد ساختار ماون داده
http://fusesource.com/docs/esb/4.2/d...-MavenDir.html
حالا سوالم اینه که این فایل کامپایل شده کجا مورد استفاده قرار می گیرد؟

----------


## L u k e

خوب فلدر target شامل خروجی build شده پروژه اس دیگه

----------


## فائزه-ق

خب مشکل همینه، نمیفهمم این فایل کجا باید استفاده باشه یا اصلا نیازی هست که اون رو به صورت جداگانه جائی استفاده کنیم یا نه؟

----------


## L u k e

خوب برای مثال اگه پروژه وب سایت باشه خروجی رو وقتی می خوای سایت رو آپلود کنی نیاز داری 
اگه هم Application باشه وقتی که بخوای منتشرش کنی
خوب همیشه که نمی شه با Netbeans اجرا کرد که

----------


## فائزه-ق

ممنون از وقتی که گذاشتین :لبخند:

----------


## ناصرقلی

maven ابزار خوبی است اما هرکس که خواست پروزه ای با چند ماجول و به صورت پدر فرزندی را با آن ایجاد کند و با اکلیپس و پلاگین m2eclipse روی پروژه اش کار کند ور افتاد ! مایه تاسف است که اکلیپس و میون خیلی آبشون با هم تو یه جوب نمی ره. در این مورد Intellij Idea خیلی رفتار دوستانه تری با maven دارد. ما که با اکلیپس و maven بسی خون جگر خوردیم  و دست آخر هم مجبور شدیم بریم سراغ IntelliJ Idea

----------


## فائزه-ق

میشه بگین چه مشکلاتی معمولا در اکلیپس ایجاد می کند؟ من تازه کارم و نمیدونم مشکلاتم از نابلدی منه یا مشکل ماون؟  :لبخند:

----------


## ناصرقلی

مشکل در عدم کامپایل شدن ماجولها یا عدم قبول کردن برخی از پلاگینهای میون . عدم تشخیص تغییرات ایجاد شده در ماجولها و ... به ویژه وقتی از پروفایل هم استفاده کرده باشین . پلاگین اکلیپس خودش یک بیلدر میون به پروژه شما می چسباند که کاری به پروفایل ندارد و شما برای تعیین پورفایل باید خودتان پروژه را بیلد کنید !  در حالی که IntelliJ هم وابستگی ماجولها را درست تشخیص می دهد و هم اینکه امکان انتخبا پروفایل را به راحتی در کنار صفحه به شما می دهد. 
در IntelliJ وابستگی ماجولهای شما همگی از طریق جر فایلهای دیپلوی یا اینستال شده صورت می گیرد نه از طریق رفرنس مستقیم به کد داخل IDE اما در عین حال در موقع دیباگ سورسها را به شما نشان می دهد چون متوجه می شود این سورسها مال کدام جر فایل است اما در اکلیپس رفرس به ماجولها در حالت پیش فرض از داخل اکلیپس است و به سورس کامپایل شده توسط اکلیپس و نه جر فایل اینستال شده اگر هم ستینگ را تغییر دهید دیگر نمی توانید به سادگی در موقع دیباگ سورس ماجولهای دیگر را ببینید.
هر چند من به جز در این مورد طرفدار اکلیپس هستم اما همنشینی میون و اکلیپس حتما به خون ریزی منجر خواهد شد البته قربانی هم برنامه نویس است.

----------

