مهدی عادلی فر
بنیانگذار توسینسو و برنامه نویس

آموزش بیلد کردن پروژه های جاوا با Maven

سلام به کاربران Tosinso. یکی از قدیمی ترین و پرکاربرد ترین package manager ها توی برنامه نویسی package manager مربوط به زبان جاوا هست که Apache Maven نام دارد. البته package manager های مختلفی برای جاوا وجود دارد ولی می‌توان گفت که یکی از معروف ترین و پراستفاده ترین آن‌ها Maven است.دقت داشته باشید که Maven فراتر از یک مدیر پکیج ساده است در اصل Maven یک ابزار مدیریت پروژه است که می‌تواند کارهای مدیریتی مختلفی بر روی پروژه شما انجام دهد و خروجی های مناسب را تولید نماید و یا تست های مورد نظر را انجام دهد. همچنین Maven پلاگین های مختلفی دارد که هرکدام می‌توانند برای بیلد کردن نوع خاصی از پروژه یا اهدافی مانند تست کردن و … مورد استفاده قرار گیرند.

دوره های شبکه، برنامه نویسی، مجازی سازی، امنیت، نفوذ و ... با برترین های ایران

در دوره آموزش جاوا ( آموزش برنامه نویسی جاوا ) این موارد بصورت رایگان آموزش داده شده است

تاریخچه Maven

Maven یک کلمه به زبان ییدیش می‌باشد و معنی آن جمع کننده دانش است. استفاده از Maven در پروژه توربین جاکارتا بود. این پروژه به چند پروژه کوچک‌تر تقسیم شده بود که هر کدام فایل‌های jar مختلف و خاصی داشتند و نیازمند یک سیستم بود تا بتواند آن‌ها را کنار هم گذاشته و به صورت یکپارچه ارائه شوند. بنابراین Maven ساخته شد. هدف از ساخت Maven راحت‌تر کردن و سریع‌تر کردن فرایند برنامه نویسی است و اینکه بتوان فرایند تولید را راحت‌تر کرد.

ساختار Maven

همانطور که گفته شد با Maven می‌توان کارهای مختلفی در زمینه تولید و بیلد نرم‌افزار انجام داد. ولی کاربردی که در این مطلب مورد نظر ماست بخش مدیریت پکیج ها می باشد. همانطور که در معرفی سایر package manager ها گفته بودیم در اکثر این ابزارها فایلی وجود دارد که لیست کتابخانه‌هایی را که پروژه ما به آن وابسته است را نگهداری می‌کند. Maven هم از این قاعده مستثنی نیست و یک فایل به نام pom.xml دارد که لیست وابستگی‌ها و نسخه های هرکدام را در خود نگهداری می‌کند.

pom مخفف project object model می باشد. بر خلاف سایر ابزارهای مدیریت پکیج که معرفی کرده بودیم، کتابخانه‌هایی که به پروژه اضافه می‌شوند و نام آن‌ها در فایل pom.xml قرار می‌گیرد در داخل یک پوشه در پروژه ذخیره نمی گردد. در عوض این وابستگی‌ها در یک نقطه از کامپیوتر شما ذخیره می‌شوند و هر بار که لازم باشد Maven به سراغ آن پوشه می‌رود و از کتابخانه مورد نظر برای بیلد کردن و اجرای پروژه استفاده می کند.

معمولاً پوشه ای که کتابخانه‌های Maven در آن نگهداری می‌شود m2 نام دارد. بستگی به نوع سیستم عامل این پوشه در محل مختلفی ذخیره می‌شود. برای مثال در ویندوز اگر Maven را نصب کرده باشید و با آن کتابخانه‌هایی نصب کرده باشید می‌توانید پنجره Run را باز کنید و نام m2 را در آن تایپ کرده و اینتر بزنید تا این پوشه برای شما باز شود. اما اگر شما کاربر لینوکس هستید این پوشه را می‌توانید در پوشه home خودتان پیدا کنید. دقت داشته باشید که این پوشه مخفی است و برای دیدن آن باید مجوز دیدن پوشه های مخفی را داشته باشید.

نحوه کار با Maven

برای شروع کار با Maven باید jdk بر روی سیستم شما نصب باشد که لازم هست ورژن جاوایی که نصب می‌کنید از نسخه ۷ به بالا باشد.

  • بعد از دانلود باید فایل زیپ را در یک پوشه extract کرده و آدرس پوشه bin را به path سیستم اضافه کنید.
  • حال برای اینکه بدانیم درست کار می‌کند در خط فرمان سیستم عامل دستور زیر را وارد می‌کنیم
mvn -v

با زدن دستور زیر نسخه مربوط به Maven نمایش داده می‌شود و همچنین توضیحاتی در مورد نسخه جاوا و سیستم عامل نیز نمایش داده می‌شود.برای کار با Maven باید فایل pom.xml وجود داشته باشد. این فایل وقتی که یک پروژه تازه را شروع می‌کنیم باید حداقل دارای محتویات زیر باشد:

   4.0.0

   com.companyname.project-group
   project
   1.0


تگ project تگ اصلی این فایل است و همه قسمت‌ها در داخل این تگ قرار می گیرند. تگ modelVersion برای مشخص کردن نسخه برنامه شما است. دقت داشته باشید که برنامه شما نیز یک پکیج محسوب می‌شود و باید شماره نسخه و سایر مشخصات یک پکیج را داشته باشد. پکیج های Maven دارای سه خصوصیت اصلی هستند modelVersion, groupId, artifactId که به ترتیب نام برنامه و نام گروه برنامه و شماره نسخه برنامه می باشد. دقت داشته باشید که در فایل pom.xml می‌توان همه کارهای مربوط به بیلد کردن پروژه را انجام داد از جمله آن‌ها می‌توان به عملیات زیر اشاره کرد.

  • مشخص کردن نوع بسته بندی خروجی پروژه (خروجی پروژه فایل jar یا war یا خروجی دیگری باشد)
  • مشخص کردن پلاگین های مورد استفاده و پیکربندی پلاگین ها (مثل پلاگین کامپایل و یا clean و یا deploy و …)
  • مشخص کردن وابستگی ها. وابستگی‌ها در فایل pom.xml در داخل تگ dependencies قرار می‌گیرد و به ازای هر کدام از وابستگی‌ها یک تگ dependency باز می‌کنیم برای مثال به کد زیر دقت کنید.
                
                        joda-time
                        joda-time
                        2.9.2
                

در کد بالا کتابخانه joda-time اضافه می‌شود و می‌توان از آن استفاده کرد.

دستورات پر استفاده Maven

همانطور که اشاره شد برای کار با Maven از دستور mvn در خط فرمان استفاده می‌شود.حال در نظر داشته باشید که کد مربوط به پروژه را نوشته‌اید و وابستگی‌ها را نیز به فایل pom.xml اضافه کرده اید. برای اینکه پروژه را کامپایل کنید از دستور زیر استفاده می‌شود.

mvn compile

این کار باعث می‌شود که وابستگی‌های لازم به پروژه اضافه شود و کد شما کامپایل شود. بعد از اینکه عمل کامپایل با موفقیت انجام شد فایل‌های .class تولید می‌شوند که برای اینکه بسته برنامه تولید شود باید یک پکیج از آن ساخته شود که برای این کار از دستور زیر استفاده می شود.

mvn package

این کار باعث می‌شود که مثلاً فایل jar مربوط به پروژه شما تولید شود و قابل استفاده باشد. Maven دستورات دیگری مانند clean , install, test نیز دارد که برای تست کردن و نصب کردن پروژه به عنوان کتابخانه مورد استفاده و همچنین تمیز کردن پروژه مورد استفاده قرار می گیرد. نسبت به سایر package manager هایی که تا کنون توضیح داده‌ایم Maven از پیچیدگی بیشتری برخوردار است. ولی جای نگرانی نیست. زیرا که شما برای برنامه نویسی جاوا از IDE های مختلفی مثل eclipse, netbeans, Intellij استفاده می‌کنید. و این برنامه‌ها به خوبی با Maven کار می‌کنند و همه دستورات را می‌توانید بدون تایپ کردن و با ابزار هایی که این برنامه‌ها در اختیار شما قرار می‌دهند انجام دهید و نگران نباشید.

با وب سایت tosinso همراه باشید.

نویسنده: مهدی عادلی فر

منبع: tosinso.com

هرگونه نشر و کپی برداری بدون ذکر منبع و نام نویسنده دارای اشکال اخلاقی می باشد.


مهدی عادلی فر
مهدی عادلی فر

بنیانگذار توسینسو و برنامه نویس

مهدی عادلی، بنیان گذار TOSINSO. کارشناس ارشد نرم افزار کامپیوتر از دانشگاه صنعتی امیرکبیر و #C و جاوا و اندروید کار می کنم. در زمینه های موبایل و وب و ویندوز فعالیت دارم و به طراحی نرم افزار و اصول مهندسی نرم افزار علاقه مندم.

نظرات