الفريق العربي للبرمجةأرشيف المنتديات · 2000 – 2023
نسخة أرشيفية للقراءة فقط — التسجيل والمشاركة مغلقان، والمحتوى محفوظ كما كان.

مقدمة في استخدام Maven

بدأه العيافـي في 8 يوليو 2012 · 11 رد · 7,535 مشاهدة · في JavaSE
مشاركة: واتساب X فيسبوك تيليجرام
#1 صاحب الموضوع

السلام عليكم ورحمة الله وبركاته

مقدمة

عندما تقوم بعمل برنامج ما سواء كان سطح مكتب او ويب او غير ذلك, فانت ستحتاج الى تحميل مكتبات جاهزة واضافتها في classpath ...

ناهيك عن المشاكل التي ستحصل معك عندما لا تتوافق اصدار بعض المكتبات مع بعضها البعض. خاصه في الويب

تعتمد maven على ملف واحد من نوع xml تضيف فيه اسم المكتبة التي تحتاجها

لو اردت مثلا استخدام primefaces كل ما تحتاجه هو اضافة السطور التاليه الى ملف xml

<dependency>
	<groupId>org.primefaces</groupId>
	<artifactId>primefaces</artifactId>
	<version>3.3.1</version>
</dependency>

او مثلا اردت اضافة الحزمة stringtemplate

<dependency>
    	<groupId>antlr</groupId>
    	<artifactId>stringtemplate</artifactId>
    	<version>2.2</version>
    </dependency>

وهكذا

رابط تحميل اضافة maven للاكليبس

http://m2eclipse.sonatype.org/sites/m2e/

بعد التحميل و اعادة تشغيل الاكليبس

سيتم انشاء مجلد على المسار التالي باسم m2

<User Home Directory>\.m2

ويبدا بتنزيل ملفات الجار المطلوبه لتشغيل maven

يتبع .. (اول مشروع)

1
#2

السلام عليكم

اشكرك اخي على شرحك لموضوع maven. المنتديات والمواقع العربيه تفتقر لهذه المعلومات فانا الان مشغول لأسبوع في البحث عن موضوع يتعلق بال (maven) باللغه العربيه ....

اتمنى ان تكمل مشروعك عن قريب ان شاء الله

#3

المشروع الاول ...

عمل برنامج يستخدم حزمة log4j

من الاكليبس اعمل مشروع جديد واجعل نوع المشروع "Maven Project"

post-82434-024788900 1341783838_thumb.gi

عند ظهور wizard تخط الى العمليات الى ان تصل الى الصوره التالية

post-82434-078473700 1341785260_thumb.gi

بعد الضغط على "انهاء" سيكون المشروع بهذه الصوره

post-82434-084965400 1341783930_thumb.gi

ملاحظة: لا تنسي استخدام JDK في المشروع بدلا من jre

افتح ملف pom.xml ستجد في الاسفل عدة تبويبات , اضغط على التبويب dependencies (هذا التبويب لاضافة المكتبات التي ستستخدمها)

post-82434-044048200 1341784186_thumb.gi

اضغط على زر "add" في الجزء العلوي dependencies . سيتم عرض نافذه تمكنك من الوصول الى المكتبة التي تريد بواسطة groupId or artifactId , منها اختار المكتبة التي ستستخدم

post-82434-012726800 1341784408_thumb.gi

بالنسبة لـ scope اختر compile حاليا . (سنتكلم عن سبب هذا الاختيار والفرق بينه وبين الخيارات الخرى مستقبلا )

ثم اضغط على حفظ.

حاليا يمكنك ان تستخدم log4j في مشروعك.

عند كتابة الكود التالي

package vb.arabjava.oth;

import org.apache.log4j.BasicConfigurator;
import org.apache.log4j.Level;
import org.apache.log4j.Logger;

/**
 * Hello world!
 * 
 */
public class App {
	static Logger log = Logger.getLogger(App.class);
	static {
		BasicConfigurator.configure();
		log.setLevel(Level.INFO);
	}

	public static void main(String[] args) {
		System.out.println("Hello from one-jar-maven");
		log.info("info from log4j");
		log.warn("warn from log4j");
	}
}

اضغط علي زر الماوس الايمن على الملف pom.xml

ثم اختر "Maven Package"

يقوم بانشاء الحزمة واضافتها تحت المجلد "target" الموجود في المشروع

يتبع ..

المرفقات
u_05.gifu_07.gifu_09.gifu_10.gifu_06.gif
1
#4

قبل الاكمال احب ان ابين ان

groupId و artifactId تمثل اسم الحزمة و الشركة التي قامت بعمل الحزمة.

الطريقة السابقة يمكنك استخدامها مع jar او war او ear . للتغيير فقط افتح التبويب Overview ستجد في الاعلى نوع package يمكنك تغييره.

نستكمل المشروع

فعليا الحزمة السابقه لن تستفيد منها اذا كنت تريد استخدام "main method" لسببين :

1 - لم يتم تعريف Main-Class في ملف Manifest

2 - انه لم يتم تضمين log4j في ملف جار المشروع ,

لحل المشكله الاولي

في التبويب plugins الموجود في ملف pom.xml سنقوم باضافة الحزمة org.apache.maven.plugins والطريقة كما في dependencies

post-82434-099498800 1341786374_thumb.gi

post-82434-092842400 1341786392_thumb.gi

عند فتح اخر تبويب لعرض كود xml ستجد انه تم اضافة الكود التالي

post-82434-014219900 1341786487_thumb.gi

سنقوم بالتعديل علية لاضافة Main-Class

post-82434-039716400 1341786566_thumb.gi

بهذا حلينا المشكله الاولي.

اما الثانية

فسنحتاج الى اضافة onejar-maven-plugin في نفس التبيويب السابق "plugins"

post-82434-076855900 1341786827_thumb.gi

وعند الرجوع الي التبويب الاخير لرؤية كود xml ستجد انه تم اضافة الشفره التالية

post-82434-057398300 1341786905_thumb.gi

سنقوم بالتعديل عليها لتكون بالشكل التالي

post-82434-029817700 1341786986_thumb.gi

قم بحفظ الملف pom.xml

ثم بزر الماوس الايمن على ملف pom.xml اضغط على "Maven package"

post-82434-027937500 1341787583_thumb.gi

سيتم انشاء ملف الجار الخاص بك

post-82434-007362100 1341787547_thumb.gi

شغل ملف الجار ياستخدام CMS لتجرب الحزمة وترا المخرجات

post-82434-077272900 1341787665_thumb.gi

انتهي المشروع الاول... وارجوا ان يكون الشرح واضح

ساقوم برفع ملف pom.xml فهو لب الموضوع ولن تحتاج الي غيره في تطبيق المثال ...

pom.xml.txt

المرفقات
u_11.gifu_12.gifu_13.gifu_14.gifu_15.gifu_16.gifu_17.gifu_20.gifu_26.gifu_24.gif
1
#5

عندي سؤال اخي الكريم...

اني عملت برنامج متكامل في الجافا والآن اريد احول برنامجي الي مافن... سؤالي هوه : ماهي ألطريقه لتحويل برنامج متكامل java project الى maven project?

#7

عزيزي أحمد اولا اعتذر عن تاخري في الرد

هناك طريقتين

الاولي ان تعمل مشروع جديد بصيغة Maven ثم تنقل ملفاتك الى المشروع الجديد.

الثانية

ان تبقي المشروع كما هو, وتضيف ملف pom.xml وتضيف فيه القيم الازمه كما في المثال السابق. بالاضافة الي تحديد المجلد الذي يحتوي على اصناف الجافا..

لاحظ انه في maven تكون الاصناف تحت المسار التالي src\main\java

اما في المشاريع العادية تكون الاصناف تحت المجلد src

فيجب عليك اضافة كود في ملف pom للاشاره بان الاصناف الخاصة بك في المجلد src

<build>
    <sourceDirectory>${basedir}/src</sourceDirectory>
</build>

عزيزي عبد الرحمن ... لازال هناك المزيد ... اسأل الله العون .

#8

اخي العيافي عندي سؤال ، عند استخدام الادوات التي تقوم بعمل build كmaven او Ant هل هناك حاجه لان اتعلم كيفية كتابة الــ scripts مثلا في Ant قمت بتعلم كيفية كتابة وعمل build scripts ولكن عندما اتضح لي ان الIDEs تقوم باستخدام الAnt اتوماتيكيا لبناء برامجك شعرت بان تعلمي كان مضيعه للوقت فانا لم ارى كيف يمكن ان استفيد من ما تعلمته، هل الامر سيان مع Maven؟

تحياتي

No intellectual battle was ever won through retreat
You do not watch Gintama? Dude, you are missing a lot!


صورةmsrgb1485.gif ocajavase7programmerclr.gif

#9

Maven

هي فعلا تقوم بعمل build ولست في حاجه ان تتعلم الكثير... فالاكليبس يقوم بالكثير.

لكن الهدف الاساسي منها هي dependencies

اصبر علي قليلا وسترا كيف ساقوم بانشاء مشروع بال jsf and primefaces بدون تحميل اي ملف جار

#10

JSF 2 + primefaces

الادوات المستخدمة Eclipce + jboss7

اولا انشاء المشروع كما في الطريقه المذكوره سايقا .. " Maven Project"

في هذا المثال سميت المشروع كما في الصوره التالية

post-82434-042582700 1342297118_thumb.gi

سيكون المشروع بالصوره التالية

post-82434-058411800 1342297119_thumb.gi

سنقوم باضافة المجلد webapp بالطريقة الاعتيادية تحت المجلد

post-82434-098303600 1342297120_thumb.gi

اضفت ملفات web.xml و JSF تحت المجلد webapp

بالاضافة الي صنف javabean تحت الحزمة vb.arabjava.testjsf

post-82434-044722300 1342297122_thumb.gi

في ملف pom.xml قمت باضافة اسماء الحزم التي سأستخدمها في المشروع ..

		<dependency>
			<groupId>com.sun.faces</groupId>
			<artifactId>jsf-api</artifactId>
			<version>2.1.7</version>
		</dependency>
		<dependency>
			<groupId>com.sun.faces</groupId>
			<artifactId>jsf-impl</artifactId>
			<version>2.1.7</version>
		</dependency>

		<dependency>
			<groupId>javax.servlet</groupId>
			<artifactId>jstl</artifactId>
			<version>1.2</version>
		</dependency>

		<dependency>
			<groupId>javax.servlet</groupId>
			<artifactId>servlet-api</artifactId>
			<version>2.5</version>
		</dependency>

		<dependency>
			<groupId>javax.servlet.jsp</groupId>
			<artifactId>jsp-api</artifactId>
			<version>2.1</version>
		</dependency>

		<dependency>
			<groupId>com.sun.el</groupId>
			<artifactId>el-ri</artifactId>
			<version>1.0</version>
		</dependency>

بالاضافة الي ملفات primefaces و حزمة للستايل

<dependency>
			<groupId>org.primefaces</groupId>
			<artifactId>primefaces</artifactId>
			<version>3.3.1</version>
		</dependency>

		<dependency>
			<groupId>org.primefaces.themes</groupId>
			<artifactId>cupertino</artifactId>
			<version>1.0.6</version>
		</dependency>

وفي ملف web.xml اضفت القيم التاليه

<?xml version="1.0" encoding="UTF-8"?>
<web-app xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
	xmlns="http://java.sun.com/xml/ns/javaee" xmlns:web="http://java.sun.com/xml/ns/javaee/web-app_2_5.xsd"
	xsi:schemaLocation="http://java.sun.com/xml/ns/javaee 
	http://java.sun.com/xml/ns/javaee/web-app_2_5.xsd"
	id="WebApp_ID" version="2.5">

	<display-name>testjsf</display-name>

	<!-- Change to "Production" when you are ready to deploy -->
	<context-param>
		<param-name>javax.faces.PROJECT_STAGE</param-name>
		<param-value>Development</param-value>
	</context-param>

	<context-param>
			<param-name>primefaces.THEME</param-name>
			<param-value>cupertino</param-value>
	</context-param>


	<!-- Welcome page -->
	<welcome-file-list>
		<welcome-file>faces/hello.xhtml</welcome-file>
	</welcome-file-list>

	<!-- JSF mapping -->
	<servlet>
		<servlet-name>Faces Servlet</servlet-name>
		<servlet-class>javax.faces.webapp.FacesServlet</servlet-class>
		<load-on-startup>1</load-on-startup>
	</servlet>

	<!-- Map these files with JSF -->
	<servlet-mapping>
		<servlet-name>Faces Servlet</servlet-name>
		<url-pattern>/faces/*</url-pattern>
	</servlet-mapping>
	<servlet-mapping>
		<servlet-name>Faces Servlet</servlet-name>
		<url-pattern>*.jsf</url-pattern>
	</servlet-mapping>
	<servlet-mapping>
		<servlet-name>Faces Servlet</servlet-name>
		<url-pattern>*.faces</url-pattern>
	</servlet-mapping>
	<servlet-mapping>
		<servlet-name>Faces Servlet</servlet-name>
		<url-pattern>*.xhtml</url-pattern>
	</servlet-mapping>

</web-app>

ارجوا الانتباه لتغيير نوع الحزمة من jar الى war في ملف pom.xml

بعد ذلك اضغط على ملف pom.xml بزر الماوس الايمن ثم run As ثم Maven Package

ليتم توليد الحزمة تحت المجلد target

انتهي

وهذي صوره للصفات , بالاضافة الى ان الكود المصدر سيكون مرفق.

post-82434-083788600 1342297128_thumb.gi

post-82434-026975100 1342297130_thumb.gi

testjsf.zip

المرفقات
u_30.gifu_31.gifu_32.gifu_33.gifu_38.gifu_39.gif

تم تعديل هذه المشاركة بواسطة العيافـي في 14 يوليو 2012 في 23:42

#11

شكرا أخي على شرحك مع انه تم الاختصار كثير فيما بين السطور اثناء الشرح وكان الامر في غاية الصعوبة لمبتدئ مثلي اول مرة يقرأ عن الـ Maven كنت اتمنى ان يكون الشرح بالتفصيل اكثر لكن في النهاية وبعد عدة ايام من الثراء هنا وهناك تم استيعاب بعض الافكار

 

اشكرك اخي على جهدك ومحاولتك اثراء المحتوى العربي وشكرا

إذا نظــرتَ نيـوب اللـّيـثِ بـارزةً         فـلا تظــنَنَ أَنَّ اللـّيـــثَ يبْتسـِـــمُ


 


 


رسم المخططات البيانية بواسطة الجافا


 


كتاب تحليل وتصميم نظم المعلومات


#12

شكرا على الشرح الرائع

لكن لدى سؤال هل المكتبات المستخدمه من خلال Maven عند تنصيب البرنامج على جهاز اخر لابد لهذا الجهاز ان يحتوى ايضا على Maven ام لا.

وهل Maven يحدث فقط من خلال الانترنت؟

تحياتى

73b14eadba.gif

الحمدلله والصلاة والسلام على رسول الله وعلى آله وصحبه أجمعين

لكل مبتدئى البرمجه برمجه بلغه السى شارب

تنصيب ويندوز 8 على vmware

مواضيع مشابهة