Upload
others
View
15
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پوشه
اجرا نماییم.
پایان