33
Apache Maven جمن ان تخصصی اوراکل ووای جا ایرانصه خویسانز برنامه نری ا بسیاMaven را یک ابزارBuild ی که برایند. ابزار میدان( ت ساختن محصوArtifacts ) ازCode Source میگیرد. نگاهارستفاده قر مورد ام افزار به نردسان و مهن مدیران پروژهMaven ر استرده ت گست : یک ابزارست ؟ یک ابزاردگاه چیوت این دو دی پروژه. تفا مدیریتBuild ند مانAnt فقط( پردازش پیش روی برPreprocessing ) ( ل ، بسته بندی ، کامپایPackaging ) ، ند مدیریت پروژه مانشد.یک ابزاررکز میباتم توزیع م آزمایش وMaven ک سری ی های مافوقژگی وی ابزارBuild ار میدهد. شما قرختیار را در اMaven وه بر عت هاین که قابلی ایBuild ، تولیدرشاتیه گزاین در ته را داراست ، همچنWeb Site ستفاده میشود.م افزار ا تیم توسعه نرعضایط بین ارتبا و تسهیل ا بهاي متن باز به ه پروژه چقدر كهت دیگر ، هر عبارMaven به عن سكوي وان یك اند كه رسیده نتیجهز به این نیدگان دهنقل میشوند ، توسعه منت مدیریتMaven ه سازي مدیریتر ساد فقط ابزاBuild ابط مشترك بینه یك ر نیست ، بلك مي باشد.م افزاري هاي نرگان و پروژه دهن توسعهریادگیین مقاله ی هدف از اادیفاهیم بنی مApache Maven در قالب چ ند مثال خین مقاله در ا بود. ما واهدIntelliJ IDEA وان را به عنIDE شما با پایاندواریم. امیب کرده ایمنتخا ا از ایدهن مقاله درک درستیدن ای رسانMaven خت پروژه پیدا کنید.ی سا برادی : کلمات کلیApache Maven ، Project Object Model (POM) مدل شیء پروژه ،Dependency ، )وابستگی( Plugin ، Repositories )مخازن( 1 - معرفی تعریفApache Maven است که : به این صورتMaven مدیریت پروژه است یک ابزاره شامل یک کProject Object Model (POM) دها ، طول عمرندارستاک سری از ا ، ی پروژه(Lifecycle) ( وابستگی مدیریتیستم ، سDependency ) برای اجرای و منطقی اهدافPlugin ر می باشد.ریف شده طول عم در فازهای تعن حقیقت کهد ای ندهیجازه اMaven راست شما مدیریت پروژه ا یک ابزار یک ابزارستجوی شما فقط در جند.اگر بترساBuild هستیدMaven ر را بهین کا ا آن را به صینهد و همچن می دنجام خوبی اع می کند. برجسته کامل توزی ورت ترین مشخصهMaven ای کتابخانهر وابستگی ه به صورت خودکادر استست قا این از مخازن پیش فرض را ا هارگذاری دانلود با نماید.Maven ای نگهداری برز یک فایل ابستگی هاط به واعات مربو اطXML . البته مواردیه میکندستفاد ا

Apache Maven…قاله-کتاب-فارسی...Maven بصن دییات-6 رداص Windows نامرف طخ ار ریز روتسد Maven حیحص يارجا زا نانیمطا يارب

  • Upload
    others

  • View
    12

  • Download
    0

Embed Size (px)

Citation preview

  • Apache Maven

    ایران جاوای و اوراکل تخصصی انجمن

    خالصه

    میدانند. ابزاری که برای Buildرا یک ابزار Mavenبسیاری از برنامه نویسان

    مورد استفاده قرار میگیرد. نگاه Code Sourceاز ( Artifacts ساختن محصوالت )

    : یک ابزار گسترده تر است Mavenمدیران پروژه و مهندسان نرم افزار به

    فقط Antمانند Buildمدیریت پروژه. تفاوت این دو دیدگاه چیست ؟ یک ابزار

    ، ( Packaging، کامپایل ، بسته بندی ) (Preprocessingبر روی پیش پردازش )

    یک سری Mavenآزمایش و توزیع متمرکز میباشد.یک ابزار مدیریت پروژه مانند

    عالوه بر Mavenرا در اختیار شما قرار میدهد. Buildابزار ویژگی های مافوق

    Webرا داراست ، همچنین در تهیه گزارشات ، تولید Buildاین که قابلیت های

    Site .به و تسهیل ارتباط بین اعضای تیم توسعه نرم افزار استفاده میشود

    وان یك سكوي به عن Mavenعبارت دیگر ، هر چقدر كه پروژه هاي متن باز به

    مدیریت منتقل میشوند ، توسعه دهندگان نیز به این نتیجه رسیده اند كه

    Maven فقط ابزار ساده سازي مدیریتBuild نیست ، بلكه یك رابط مشترك بین

    هدف از این مقاله یادگیری توسعه دهنگان و پروژه هاي نرم افزاري مي باشد.

    واهد بود. ما در این مقاله ند مثال خدر قالب چ Apache Mavenمفاهیم بنیادی

    IntelliJ IDEA را به عنوانIDE انتخاب کرده ایم. امیدواریم شما با پایان

    برای ساخت پروژه پیدا کنید. Mavenرساندن این مقاله درک درستی از ایده

    مدل شیء پروژه ، (Apache Maven ، Project Object Model (POM کلمات کلیدی :

    Dependency ، )وابستگی(Plugin ،Repositories )مخازن(

    معرفی -1

    یک ابزار مدیریت پروژه است Mavenبه این صورت است که : Apache Mavenتعریف

    ، یک سری از استانداردها ، طول عمر (Project Object Model (POMکه شامل یک

    و منطقی برای اجرای (Dependency، سیستم مدیریت وابستگی ) (Lifecycle)پروژه

    در فازهای تعریف شده طول عمر می باشد. Pluginاهداف

    یک ابزار مدیریت پروژه است شما را Mavenاجازه ندهید این حقیقت که

    این کار را به Mavenهستید Buildبترساند.اگر شما فقط در جستجوی یک ابزار

    ورت کامل توزیع می کند. برجسته خوبی انجام می دهد و همچنین آن را به ص

    این است قادر است به صورت خودکار وابستگی های کتابخانه Mavenترین مشخصه

    برای نگهداری Mavenنماید. بارگذاری دانلود ها را از مخازن پیش فرض

    استفاده میکند. البته مواردی XMLاطالعات مربوط به وابستگی ها از یک فایل

  • نیز به صورت پیش فرض در این فایل (Packagingبسته بندی ) کامپایل کد و دمانن

    قرار داده میشوند که در قسمت های بعدی به آن اشاره میکنیم.

    ( Model of a Projectمفهوم مدل یک پروژه ) -2

    Maven یک مدل از پروژه را ایجاد مینماید. شما فقطSource Code را بهByte

    Code کامپایل نمی کنید بلکه شما تعریف یک پروژه نرم افزاری را توسعه می

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

    مجوز این پروژه چیست ؟ چه واقع خصوصیات نرم افزار را توصیف می کنید :

    ستگی دارد ؟ کسی آن را توزیع کرده است ؟ چه پروژه ای به این پروژه واب

    Maven فقط یك پیشرفت در ابزاري مانندant وmake نیست. بلكه یكPlatform

    است كه معاني جدیدي از توسعه نرم افزار را در بر میگیرد. این تعریف از

    مدل براي هر پروژه نرم افزاري تعدادي از ویژگي ها را بوجود مي آورد :

    (Dependency Managementمدیریت وابستگي ها ) -1

    به این دلیل كه یك پروژه به وسیله یك سري از مختصات كه شامل شناسه گروه

    (Group ID، ) ( شناسه محصولArtifact ID) و ورژن تعریف مي شود ، پروژه ها مي

    توانند از این مختصات براي شناساندن وابستگي ها استفاده كنند.

    (Remote Repositoriesمخازن راه دور ) -2

    مدل شیء در ارتباط با مدیریت وابستگي ، ما میتوانیم از مختصاتي كه در

    Mavenتعریف شده است براي بوجود آوردن مخازن محصوالت POM ،)Maven)پروژه

    استفاده كنیم.

    (Universal Reuse Of Build Logicباز استفاده عمومي از منطق ساخت )-3

    Plugin ها شامل منطقي مي شوند كه با داده هاي توصیفي و پارامترهاي پیكر

    ( كار مي كنند. آن ها به صورتي طراحي نشده POM)مدل شیء پروژهبندي شده در

    اند كه فقط با فایل هایي كه در موقعیت هاي مشخص قرار دارند كار كنند.

    4-Easy Searching and Filtering of Project Artifacts یلترینگ و جستجوي راحت در محصوالت )ف

    پروژه(

    كرده indexبه شما اجازه مي دهد كه محتویات یك مخزن را Nexusابزاري مانند

    POMنمایید . كه این كار با استفاده از اطالعات ذخیره شده در searchو

    انجام میشود.

    5- Integration / Tool Portability پارچگي ()قابلیت حمل ابزار ، یك

  • داراي مكان هاي Eclipse ،Netbeans ، IntelliJ IDEAامروزه ابزارهایي مانند

    توانسته است Mavenمشتركي براي پیدا كردن اطالعات پروژه هستند. در واقع

    هاي مختلف ایجاد IDE( یك استاندارد را براي POM)مدل شیء پروژهبه وسیله

    نماید.

    Mavenنصب و پیكربندي

    Windowsبر روي Maven نصب

    را به عنوان یك سرویس در ویندوز نصب كنیم ، Apache Maven نیازي نیست كه

    Windowsكرده و extractرا دانلود و آن را Mavenشده zipشما فقط باید فایل

    Environment Variable .را پیكربندي كنید

    ابزار مورد نیاز :

    1-JDK 1.6 or Higher

    2-Maven 3.0.4

    3-Windows 7

    1- JDK and JAVA_HOME :

    شده هاضاف JAVA_HOMEمطمئن شوید كه Windows Environment Variableبا رفتن به

    را نشان میدهد. JDKاست و محل نصب

  • Apache Mavenدانلود -2

    دانلود http://maven.apache.org/download.htmlرا از آدرس Mavenفایل فشرده

    مورد نظرتان را میتوانید از این سایت انتخاب كرده و Mavenورژن نمایید .

    استفاده میكنیم. bin.zip apache-maven-3.0.4-دانلود كنید ما در این مقاله از

    3- Extract It

    c ،Extractنمایید ما آن در درایو Extract نلود شده در پوشه دلخواه فایل دا

    تغییر داده ایم. C:\mavenكرده و نام آن را به عنوان مثال به

    MAVEN_HOME اضافه كردن -4

    اضافه كرده و آدرس پوشه Windows Environment Variableرا به MAVEN_HOME مقدار

    Maven .را وارد مي كنیم

    PATHاضافه كردن -5

    را در آخر آن bin ،Mavenرا به روز میكنیم و آدرس پوشه PATH مقدار

    را اجرا نماییم. Mavenاضافه میكنیم و به این صورت میتوانیم دستورات

    http://maven.apache.org/download.html

  • Mavenتایید نصب -6

    صادر Windowsدستور زیر را خط فرمان Mavenبراي اطمینان از اجراي صحیح

    كنید نتیجه باید مانند شكل زیر باشد.

    version– mvn

    C:\Users\AMIR>mvn -version

    Apache Maven 3.0.4 (r1232337; 2012-01-17 12:14:56+0330)

    Java version: 1.7.0_06

    Java home: C:\Program Files\Java\jdk1.7.0_06\jre

    Default locale: en_US, platform encoding: Cp1252

    OS name: "windows 7" version: "6.1" arch: "x86" Family: "windows"

    Linux بر روي Maven نصب

    را به عنوان یك سرویس در لینوکس نصب كنیم ، Apache Mavenنیازي نیست كه

    ، home/amir/را دانلود و آن را مثال در Mavenشده zipشما فقط باید فایل

    extract كرده و .bash_profile کاربر amir.را پیكربندي كنید

    ابزار مورد نیاز :

    1-JDK 1.6 or Higher

    2-Maven 3.0.4 3-Fedora Linux

    MAVEN_HOMEو JAVA_HOMEمطمئن شوید كه amir کاربر bash_profile.با رفتن به

    میدهد.را نشان Mavenو JDKاضافه شده است و محل نصب

    را نیز مشخص binمانند شکل زیر دقیقا محل پوشه PATHبا استفاده از متغیر

    می کنیم.

    [amir@localhost ~]$ vim .bash_profile

  • صادر كنید Linuxدستور زیر را خط فرمان Mavenبراي اطمینان از اجراي صحیح

    نتیجه باید مانند شكل زیر باشد.

    [amir@localhost ~]$ mvn -version

    Apache Maven 3.0.4 (r1232337; 2012-01-17 12:14:56+0330)

    Maven home: /home/amir/apache-maven-3.0.4

    Java version: 1.7.0_10, vendor: Oracle Corporation

    Java home: /usr/java/jdk1.7.0_10/jre

    Default locale: en_US, platform encoding: UTF-8

    OS name: "linux", version: "3.6.8-2.fc17.x86_64", arch: "amd64", family: "unix"

    Mavenدر Proxyپیكربندي

    قرار دارید و نمیتوانید به صورت Proxy Serverشما در محل كار پشت یك اگر

    هم نمیتواند وابستگي هاي مربوط به Mavenمستقیم به اینترنت متصل شوید

    پروژه را از مخازن دانلود نماید. براي اینكه این مشكل را برطرف كنیم

    كه در Mavenرا در فایل پیكربندي Proxy Serverباید

    {MAVEN_HOME}/conf/settings.xml .قرار دارد تعریف كنیم

  • را در آن وارد Proxyه و جزییات را پیدا كرد MAVEN_HOME}/conf/settings.xml}فایل

    میكنیم.

    {MAVEN_HOME}/conf/settings.xml

    را Proxy Serverدر آورده و جزییات commentرا از Proxyمانند شكل زیر مقادیر

    در آن اضافه میكنیم به عنوان مثال :

  • optional

    true

    http

    amir

    password

    proxy.amir.com

    8888

    local.net|some.host.com

    تغییرات فایل را ذخیره میكنیم.بعد از انجام

    Apache Maven در مخازن

    (Maven (Maven local repositoryزن محلي مخ

    یك پوشه است كه براي ذخیره سازي تمام وابستگي هاي پروژه Mavenمخزن محلي

    (Plugin Jars و فایل هاي دیگري كه توسطMaven دانلود شده اند( مورد استفاده

    Build را Maven . به عبارت ساده تر هنگامي كه شما یك پروژه گیرد قرار مي

    میكنید همه ي وابستگي ها در مخزن محلي ذخیره مي شود.

    قرار دارد. m2.در پوشه Mavenبه صورت پیش فرض مخزن محلي

    1. Unix/Mac OS X – ~/.m2

    2. Windows – C:\Documents and Settings\{your-username}\.m2

  • (Maven (Maven local repositoryپیكربندي مخزن محلي

    ( را به یك نام شناخته شده تر m2.)ما نام این محل ذخیره سازي پیش فرض

    تغییر مي دهیم. c:/maven_repoمثل

    ا به ر localRepositoryرا باز كرده و مقدار MAVEN_HOME}/conf/settings.xml}فایل

    c:/maven_repo میدهیم.تغییر

    {MAVEN_HOME}\conf\setting.xml

    c:/maven_repo

    بعد از انجام تغییرات فایل را ذخیره میكنیم.

    (Maven (Maven central repositoryمخزن مركزي

    را pom.xmlفایل Mavenمیكنید ، Buildرا Mavenهنگامي كه شما یك پروژه

    Mavenبراي شناسایي وابستگي ها به منظور دانلود چك مینماید.ابتدا

    ( میگیرد و اگر آن ها را Maven local repositoryوابستگي ها را از مخزن محلي )

    ( Maven central repositoryپیدا نكرد ، وابستگي ها را از مخزن پیش فرض مركزي )

    دانلود مینماید:

    http://search.maven.org

    (Maven (Maven Remote repositoryمخزن راه دور

    http://search.maven.org/

  • دانلود Mavenتمام وابستگي ها را از مخزن مركزي Mavenبه صورت پیش فرض ،

    میكند اما تمام كتابخانه ها در مخزن مركزي وجود ندارند و فقط در مخزن

    وجود دارند.براي ( JBoss (JBoss repositoryیا مخزن Java.netهاي راه دور مثل

    اضافه كردن این مخازن از روش زیر استفاده میكنیم.

    Java.netمخزن -1

    به صورت زیر وارد میكنیم: pom.xml رادر فایل Java.netجزییات مربوط به مخزن

    pom.xml

    java.net

    https://maven.java.net/content/repositories/public/

    JBoss repository) JBoss) مخزن -2

    به صورت زیر وارد میكنیم: pom.xml رادر فایل JBoss جزییات مربوط به مخزن

    pom.xml

    JBoss repository

    http://repository.jboss.org/nexus/content/groups/public/

    Mavenدر سازو کار وابستگی ها

  • کمک میکند که تمام وابستگی ها به صورت Mavenسازو کار وابستگی ها در

    خودکار دانلود شوند و ورژن کتابخانه ها نیز به روز باشند.

    پروژه خود loggingبه عنوان سازو کار Log4Jفرض کنید که شما میخواهید

    استفاده کنید دو حالت در پیش روی شما است:

    روش سنتی -1

    http://logging.apache.org/log4jمراجعه به سایت -1

    Log4J فایل jarدانلود -2

    فایل به پروژه jarاضافه کردن این -3

    اجرا و حل مشکالت احتمالی مربوط به وابستگی ها به صورت دستی -4

    Mavenروش -2

    را بدانید Maven (Maven coordinates ،)Log4Jنیاز دارید که مختصات شما -1

    برای مثال :

    log4j

    log4j

    1.2.14

    Maven 1.2.14 ورژن ، Log4J باشد نشده ذکر ورژن اگر. میکند دانلود خودکار صورت به را

    . شود می دانلود خودکار صورت به Log4J ورژن جدیدترین

    : کنیم می معرفی pom.xml فایل در را Maven مختصات -2

    log4j

    log4j

    1.2.14

    را دانلود Log4J.jarبه صورت خودکار Build ،Mavenدر زمان کامپایل یا -3

    قرار میدهد. Mavenنموده و آن را در مخزن محلی

    http://logging.apache.org/log4j

  • مدیریت می شود. Mavenتمام موارد به وسیله -4

    نتیجه گیری

    افتاد ؟ زمانی که شما یک Mavenتفاوت را مشاهده کردید ؟ چه اتفاقی در

    فراخوانی میشود ، اگر مختصات pom.xmlمیکنید ، فایل Buildرا Mavenپروژه

    Log4J مشاهده کند به ترتیب زیر عمل می کند : را

    1- Log4J را در مخزن محلیMaven (Maven local repository .جستجو میکند)

    2- Log4J را در مخزن مرکزیMaven (Maven central repository .جستجو میکند )

    3- Log4J را در مخزن راه دورMaven (Maven Remote repository جستجو)

    تعریف شده باشد(. pom.xmlمیکند.)اگر در داخل فایل

    بسیار جالب Mavenهمان طور که میبینید مدیریت وابستگی کتابخانه ها در

    است و به میزان زیادی در وقت برنامه نویسان صرفه جویی میکند.

    را بدست بیاوریم ؟ شما میتوانید Mavenحاال سوال این است که چطور مختصات

    ، http://search.maven.orgبا مراجعه به سایت

    Jar .فایل مورد نظر خود را جستجو نمایید

    ( Maven (Maven local repositoryاضافه کردن کتابخانه به مخزن محلی

    تصاویر ایجاد یک کتابخانه مهم برای جاوا است که برای kaptcha برای مثال

    captcha به منظور متوقف کردنspam مورد استفاده قرار میگیرد ، اما این

    موجود نمی باشد. ( Maven (Maven central repository فایل در مخزن مرکزی

    آشنا Mavenفایل در مخزن محلی jarدر این قسمت شما را با نحوه نصب این

    میکنیم.

    1- mvn install

    kaptcha را دانلود کنید وversion.jar-kaptcha را در جایی مثال درایوD کپی

    فرمان زیر را صادر کنید : کنید.

    mvn install:install-file -Dfile=D:\kaptcha-{version}.jar -DgroupId=com.google.code

    -DartifactId=kaptcha -Dversion={version} -Dpackaging=jar

    http://search.maven.org/http://code.google.com/p/kaptcha/http://code.google.com/p/kaptcha/

  • c:\>mvn install:install-file -Dfile=D:\kaptcha-2.3.jar -DgroupId=com.google.code

    -DartifactId=kaptcha -Dversion=2.3 -Dpackaging=jar

    [INFO] Scanning for projects...

    [INFO] Searching repository for plugin with prefix: 'install'.

    [INFO] ------------------------------------------------------------------------

    [INFO] Building Maven Default Project

    [INFO] task-segment: [install:install-file] (aggregator-style)

    [INFO] ------------------------------------------------------------------------

    [INFO] [install:install-file]

    [INFO] Installing D:\kaptcha-2.3.jar to

    C:\maven_repo\com\google\code\kaptcha\2.3\kaptcha-2.3.jar

    [INFO] ------------------------------------------------------------------------

    [INFO] BUILD SUCCESSFUL

    [INFO] ------------------------------------------------------------------------

    [INFO] Total time: < 1 second

    [INFO] Finished at: Tue May 12 13:41:42 SGT 2009

    [INFO] Final Memory: 3M/6M

    [INFO] ------------------------------------------------------------------------

    کپی شده است . Mavenدر مخزن محلی kaptcha.jar اکنون

    2- pom.xml

    معرفی میکنیم. pom.xmlفایل را در jarبعد از نصب ، مختصات این

    com.google.code

    kaptcha

    2.3

  • 3- Build

    . است دریافت قابل ( Maven local repository) محلی مخزن از kaptcha.jar اکنون

    Mavenبا استفاده از JAVAایجاد یک پروژه

    و Mavenجاوا با استفاده از در این قسمت شما با نحوه ایجاد یک پروژه

    فایل آشنا میشوید. jarو بسته بندی آن به صورت یک IntelliJ IDEAمعرفی آن به

    1. Maven 3.0.4

    2. IntelliJ IDEA 12

    3. JDK 6 or Higher

    Maven Templateایجاد یک پروژه از -1

    ویندوز به شاخه ای که میخواهید پروژه یا خط فرمان linuxدر ترمینال

    نلود شده در آن ذخیره شود بروید و فرمان زیر را صادر کنید :دا

    mvn archetype:generate -DgroupId={project-packaging} -DartifactId={project-name} -

    DarchetypeArtifactId=maven-archetype-quickstart -DinteractiveMode=false

    که کند ایجادmaven-archetype-quickstartاز پروژه یک که میگوید Maven به دستور این

    آرگومان کردن ازوارد شما اگر. میباشد Maven در فرض پیش Plugin یک این

    archetypeArtifactId الگوها از لیست یک نظرکنید صرف(Template )نشان شما به انتخاب برای

    . میشود داده

    برای مثال :

    $ mvn archetype:generate -DgroupId=com.amir -DartifactId=NumberGenerator -DarchetypeArtifactId=maven-

    archetype-quickstart -DinteractiveMode=false

    [INFO] Scanning for projects...

    [INFO]

    [INFO] -- omitted for readability

    [INFO] ----------------------------------------------------------------------------

    [INFO] Using following parameters for creating project from Old (1.x) Archetype: maven-archetype-

    quickstart:1.0

    [INFO] ----------------------------------------------------------------------------

    [INFO] Parameter: groupId, Value: com.amir

  • [INFO] Parameter: packageName, Value: com.amir

    [INFO] Parameter: package, Value: com.amir

    [INFO] Parameter: artifactId, Value: NumberGenerator

    [INFO] Parameter: basedir, Value: /Users/amir/Documents/workspace

    [INFO] Parameter: version, Value: 1.0-SNAPSHOT

    [INFO] project created from Old (1.x) Archetype in dir:

    /Users/amir/Documents/workspace/NumberGenerator

    [INFO] ------------------------------------------------------------------------

    [INFO] BUILD SUCCESS

    [INFO] ------------------------------------------------------------------------

    [INFO] Total time: 3.917s

    [INFO] Finished at: Mon Dec 17 18:53:58 MYT 2012

    [INFO] Final Memory: 9M/24M

    [INFO] ------------------------------------------------------------------------

    تمام با هستیم که ای شاخه در NumberGenerator نام به پروژه یک دستور این اجرای با

    . میشود کپی آن ساختار

    Maven پروژه ساختار -2

    Maven یک ساختار استاندارد را برای هر پروژه ایجاد می کند که به صورت زیر

    است :

    NumberGenerator

    |-src

    |---main

    |-----java

    |-------com

    |---------amir

    |-----------App.java

    |---test

    |-----java

    |-------com

    |---------amir

  • |-----------AppTest.java

    |-pom.xml

    کدهای src/main/java/project-package/در پوشه source codeبه عبارت ساده تر تمام

    قرار میگیرد. src/test/java/project-package/تست نیز در

    نیز ایجاد میشود که این فایل شبیه pom.xmlو همانطور که میبینید یک فایل

    Pluginساختار پروژه ، می باشد که اطالعات داخلی پروژه ، Build.xml ،Antفایل

    های پروژه برای دسترسی به وابستگی ها و .... در آن قرار دارد.

    pom.xml

    4.0.0

    com.amir

    NumberGenerator

    jar

    1.0-SNAPSHOT

    NumberGenerator

    http://maven.apache.org

    junit

    junit

    3.8.1

    test

    IntelliJ IDEAمتناسب سازی پروژه با -3

  • برای در آن قرار دارد (و pom.xmlابتدا وارد پوشه پروژه شوید )جایی که

    استفاده دستوراین از IntelliJ IDEAپروژه قابل اجرا در به Mavenتبدیل پروژه

    کنید :

    mvn idea:module

    را ایجاد مینماید. IntelliJ IDEAاین دستور تمام فایل های مورد نیاز برای

    POM کردن بروز -4

    pom.xml که توسطMaven دانلود شده است بسیار ساده و قدیمی است در اغلب

    متوجه شود Mavenرا اضافه کنید تا Compiler Pluginموارد شما نیاز دارید یک

    JDKبرای کامپایل پروژه استفاده کند. ) ورژن پیش فرض JDKکه از کدام ورژن

    است بسیار قدیمی است(. 1.4که pomدر فایل

    org.apache.maven.plugins

    maven-compiler-plugin

    2.3.2

    1.7

    1.7

  • ارتقا میدهیم. 4.11به 3.8.1را نیز از junitورژن همچنین

    junit

    junit

    4.11

    test

    pom.xml – full version.

    4.0.0

    com.amir

    NumberGenerator

    jar

    1.0-SNAPSHOT

    NumberGenerator

    http://maven.apache.org

    junit

    junit

    4.11

    test

  • org.apache.maven.plugins

    maven-compiler-plugin

    2.3.2

    1.7

    1.7

    پیامی را به منظور اعمال pom.xml ،IntelliJ IDEAبعد از بروز سازی فایل

    Import Changesتغییرات و دانلود مجدد وابستگی ها صادر میکند که با زدن

    pom.xmlشروع به دانلود کردن وابستگی ها میکند بدیهی است هر زمان که فایل

    میگردد reloadتغییر میکند این پیام نشان داده میشود و بعد یک بار پروژه

    را نزنیم باید در Import Changesتا تغییرات در ساختار پروژه اعمال شود اگر

    صادر کنیم. NumberGeneratorرا در پوشه mvn idea:moduleخط فرمان دوباره دستور

    Business Logic بروزرسانی -5

    که دارای متد تولید یک کلید یکتا appبرای که اطمینان پیدا کنیم که شیء

    ایجاد unit testحرف الفبا ایجاد میکند تغییرات زیر را 36میباشد دقیقا

    (Test driven development )میکنیم.

    AppTest.java

    package com.amir;

    import org.junit.Assert;

  • import org.junit.Test;

    public class AppTest {

    @Test

    public void testLengthOfTheUniqueKey() {

    App obj = new App();

    Assert.assertEquals(36, obj.generateUniqueKey().length());

    }

    }

    business logic کردن کامل

    App.java

    package com.amir;

    import java.util.UUID;

    /**

    * Generate a unique number

    *

    */

    public class App

    {

    public static void main( String[] args )

    {

    App obj = new App();

    System.out.println("Unique ID : " + obj.generateUniqueKey());

    }

    public String generateUniqueKey(){

  • String id = UUID.randomUUID().toString();

    return id;

    }

    }

    (Maven (Packagingبسته بندی -6

    فایل پروژه استفاده میکنیم . با jarکامپایل و تولید برای Mavenاکنون از

    فایل قابل مشاهده jarساختار خروجی packagingو قسمت pom.xmlمراجعه به فایل

    میباشد.

    pom.xml – full version.

    4.0.0

    com.amir

    NumberGenerator

    jar

    1.0-SNAPSHOT

  • Mavenبا استفاده از JAVA تحت وبایجاد یک پروژه

    و Spring MVCچگونگی ایجاد یک پروژه تحت وب جاوا با استفاده از در این مثال

    را به شما نشان میدهیم. IntelliJ IDEAمطابق سازی آن با

    ابزار مورد استفاده :

    1. Maven 3.0.5 2. IntelliJ IDEA 12 3. JDK 6 or Higher 4. Spring 3.2.0.RELEASED 5. JBoss 6.1

    Maven Template از وب تحت پروژه یک تولید -1

    یا خط فرمان ویندوز به شاخه ای که میخواهید پروژه دانلود linuxدر ترمینال

    .شده در آن ذخیره شود بروید

    mvn archetype:generate -DgroupId={project-packaging} -DartifactId={project-name} -

    DarchetypeArtifactId=maven-archetype-webapp -DinteractiveMode=false

    ید :و فرمان زیر را صادر کن

    C:\mvn archetype:generate -DgroupId=com.amir -DartifactId=CounterWebApp

    DarchetypeArtifactId=maven-archetype-webapp -DinteractiveMode=false

    دانلود میشود که دارای ساختار تحت وب CounterWebAppیک پروژه به نام

    است. Mavenاستاندارد

    Mavenساختار پروژه -2

    Maven یک ساختار تحت وب برای پروژه ایجاد میکند که دارای به صورت خودکار

    روژه به صورت زیر می باشد:است.ساختار پ web.xmlو pom.xmlفایل های

  • CounterWebApp

    |-src

    |---main

    |-----resources

    |-----webapp

    |-------index.jsp

    |-------WEB-INF

    |---------web.xml

    |-pom.xml

    به صورت زیر است: pom.xmlفایل

    pom.xml

    4.0.0

    com.amir

    CounterWebApp

    war

    1.0-SNAPSHOT

    CounterWebApp Maven Webapp

    http://maven.apache.org

    junit

    junit

    3.8.1

    test

    CounterWebApp

  • به صورت زیر است: web.xmlفایل

    است که آن را در مرحله 2.3مورد استفاده Servletهمان طور که می بینید ورژن

    ارتقا می دهیم: 2.5بعد به

    web.xml –

    Archetype Created Web Application

    index.jsp – A simple hello world html file

    Hello World!

    IntelliJ IDEAمتناسب سازی پروژه با -3

    ابتدا به IntelliJ IDEAتحت وب به یک پروژه متناسب با Mavenبرای تبدیل فایل

    رفته و بعد دستور زیر را صادر کنید : CounterWebAppپوشه

    C:\CounterWebApp>mvn idea:module -Dwtpversion=2.0

    ما به یک پروژه تحت وب جاوا نیاز داریم نه یک پروژه جاوا به همین دلیل

    استفاده میکنیم تا پروژه Dwtpversionاز آرگومان mvn idea:moduleدر آخر دستور

    تبدیل به یک پروژه تحت وب جاوایی شود.

  • اجرا JBossباز کرده و آن را یک بار با IntelliJ IDEAاکنون پروژه را با

    چاپ میشود. Hello Worldمی بینیم که پیام یکنیم.م

    POM بروزرسانی -4

    این پروژه را کامپایل JDK7کامپایلر تا مشخص شود pluginاضافه کردن -1

    میکند.

    Springاضافه کردن وابستگی های -2

    4.11به نسخه junitبروزرسانی -3

    pom.xml

    4.0.0

    com.amir

    CounterWebApp

  • war

    1.0-SNAPSHOT

    CounterWebApp Maven Webapp

    http://maven.apache.org

    3.0.5.RELEASE

    4.11

    1.7

    org.springframework

    spring-core

    ${spring.version}

    org.springframework

    spring-web

    ${spring.version}

    org.springframework

    spring-webmvc

    ${spring.version}

  • junit

    junit

    ${junit.version}

    test

    CounterWebApp

    org.apache.maven.plugins

    maven-compiler-plugin

    3.0

    ${jdk.version}

    ${jdk.version}

    پیامی را به منظور اعمال pom.xml ،IntelliJ IDEAبعد از بروز سازی فایل

    Import Changesتغییرات و دانلود مجدد وابستگی ها صادر میکند که با زدن

    pom.xmlشروع به دانلود کردن وابستگی ها میکند بدیهی است هر زمان که فایل

    میگردد reloadتغییر میکند این پیام نشان داده میشود و بعد یک بار پروژه

    را نزنیم باید در Import Changesتا تغییرات در ساختار پروژه اعمال شود اگر

    صادر کنیم. CounterWebbAppرا در پوشه mvn idea:moduleخط فرمان دوباره دستور

  • 5- Spring MVC REST(کنترلر کردن اضافه (spring

    یک کالس کنترلر به پروژه اضافه میکنیم که دارای دو متد ساده برای چاپ

    Message :میباشد

    /src/main/java/com/amir/controller/BaseController.java

    package com.amir.controller;

    import org.springframework.stereotype.Controller;

    import org.springframework.ui.ModelMap;

    import org.springframework.web.bind.annotation.RequestMapping;

    import org.springframework.web.bind.annotation.RequestMethod;

    @Controller

    @RequestMapping("/")

    public class BaseController {

    @RequestMapping(value="/welcome", method = RequestMethod.GET)

    public String welcome(ModelMap model) {

    model.addAttribute("message", "Maven Web Project + Spring 3 MVC - welcome()");

    //Spring uses InternalResourceViewResolver and return back index.jsp

    return "index";

    }

    @RequestMapping(value="/welcome/{name}", method = RequestMethod.GET)

  • public String welcomeName(@PathVariable String name, ModelMap model) {

    model.addAttribute("message", "Maven Web Project + Spring 3 MVC - " + name);

    return "index";

    }

    }

    WEB-INFرا در پوشه mvc-dispatcher-servlet.xmlبه نام springیک فایل پیکربندی

    ایجاد میکنیم.

    /src/main/webapp/WEB-INF/mvc-dispatcher-servlet.xml

    /WEB-INF/pages/

    .jsp

  • Springارتقا میدهیم و همچنین 2.5ورژن servlet را نیز به web.xmlفایل

    Framework را از طریقSpring Listener :با پروژه تحت وب یکپارچه میسازیم

    /src/main/webapp/WEB-INF/web.xml

    Counter Web Application

    mvc-dispatcher

    org.springframework.web.servlet.DispatcherServlet

    1

    mvc-dispatcher

    /

    contextConfigLocation

    /WEB-INF/mvc-dispatcher-servlet.xml

    org.springframework.web.context.ContextLoaderListener

  • کپی کرده تا از دسترسی WEB-INFدر داخل pagesرا به پوشه index.jspفایل

    messageمستقیم کاربر به آن جلوگیری کنیم .فایل را ویرایش کرده و قسمت چاپ

    را به آن اضافه می کنیم:

    /src/main/webapp/WEB-INF/pages/index.jsp

    Hello World!

    Message : ${message}

    ساختار نهایی به این صورت خواهد شد :

  • اجرا میکنیم که نتیجه به صورت زیر JBoss 6.1اکنون پروژه را با استفاده از

    است :

    http://localhost:8080/CounterWebApp/welcome

    http://localhost:8080/CounterWebApp/welcome/amir

    http://localhost:8080/CounterWebApp/welcomehttp://localhost:8080/CounterWebApp/welcome/amir

  • (Maven (Packagingبسته بندی -6

    نیز مانند پروژه جاوا ابتدا به شاخه برنامه تحت وب war fileبرای ایجاد

    در war fileرا صادر می کنیم که بعد از اجرا یک mvn packageمیرویم و دستور

    اضافه کرده و tomcatبرنامه ایجاد میکند که آن را میتوانیم به targetپوشه

    اجرا نماییم.

    پایان