يرشدك هذا الدليل خلال استخدام Maven لإنشاء مشروع Java بسيط.
ستقوم بإنشاء تطبيق يوفر الوقت من اليوم ثم تقوم بإنشائه باستخدام Maven.
https://raw.githubusercontent.com/spring-guides/getting-started-macros/main/prereq_editor_jdk_maven_buildtools.adoc
https://raw.githubusercontent.com/spring-guides/getting-started-macros/main/how_to_complete_this_guide.adoc
ستحتاج أولاً إلى إعداد مشروع Java ليقوم Maven بإنشائه. للحفاظ على التركيز على Maven، اجعل المشروع بسيطًا قدر الإمكان في الوقت الحالي. قم بإنشاء هذه البنية في مجلد مشروع من اختيارك.
https://raw.githubusercontent.com/spring-guides/getting-started-macros/main/create_directory_structure_hello.adoc
ضمن الدليل src/main/java/hello
، يمكنك إنشاء أي فئات Java تريدها. للحفاظ على الاتساق مع بقية هذا الدليل، قم بإنشاء هاتين الفئتين: HelloWorld.java
و Greeter.java
.
src/main/java/hello/HelloWorld.java
link : initial / src / main / java / hello / HelloWorld . java [ role = include ]
src/main/java/hello/Greeter.java
link : initial / src / main / java / hello / Greeter . java [ role = include ]
الآن بعد أن أصبح لديك مشروع جاهز للإنشاء باستخدام Maven، فإن الخطوة التالية هي تثبيت Maven.
يمكن تنزيل Maven كملف مضغوط على https://maven.Apache.org/download.cgi. الملفات الثنائية فقط هي المطلوبة، لذا ابحث عن الرابط إلى apache-maven- {version} -bin.zip أو apache-maven- {version} -bin.tar.gz.
بمجرد تنزيل الملف المضغوط، قم بفك ضغطه على جهاز الكمبيوتر الخاص بك. ثم قم بإضافة مجلد bin إلى المسار الخاص بك.
لاختبار تثبيت Maven، قم بتشغيل mvn
من سطر الأوامر:
ام فين -v
إذا سارت الأمور على ما يرام، فمن المفترض أن تحصل على بعض المعلومات حول تثبيت Maven. سيبدو مشابهًا لما يلي (على الرغم من اختلافه قليلاً عنه):
أباتشي ميفن 3.3.9 (bb52d8502b132ec0a5a3f4c09453c07478323dc5; 2015-11-10T16:41:47+00:00) منزل مخضرم: /home/dsyer/Programs/Apache-maven إصدار Java: 1.8.0_152، البائع: Azul Systems, Inc. جافا الرئيسية: /home/dsyer/.sdkman/candidates/java/8u152-zulu/jre اللغة الافتراضية: en_GB، ترميز النظام الأساسي: UTF-8 اسم نظام التشغيل: "linux"، الإصدار: "4.15.0-36-generic"، القوس: "amd64"، العائلة: "unix"
تهانينا! لقد قمت الآن بتثبيت Maven.
معلومات: قد ترغب في التفكير في استخدام غلاف Maven لحماية مطوريك من الحصول على الإصدار الصحيح من Maven، أو الاضطرار إلى تثبيته على الإطلاق. المشاريع التي تم تنزيلها من Spring Initializr تحتوي على غلاف مضمن. يظهر كبرنامج نصي mvnw
في المستوى العلوي لمشروعك والذي تقوم بتشغيله بدلاً من mvn
.
الآن وبعد تثبيت Maven، تحتاج إلى إنشاء تعريف مشروع Maven. يتم تعريف مشاريع Maven بملف XML يسمى pom.xml . من بين أشياء أخرى، يقدم هذا الملف اسم المشروع وإصداره وتبعياته الموجودة في المكتبات الخارجية.
قم بإنشاء ملف باسم pom.xml في جذر المشروع (أي ضعه بجوار المجلد src
) وأعطه المحتويات التالية:
pom.xml
link:initial/pom.xml[role=include]
باستثناء عنصر
الاختياري، يعد هذا أبسط ملف pom.xml ممكنًا وضروريًا لإنشاء مشروع Java. ويتضمن التفاصيل التالية لتكوين المشروع:
. إصدار نموذج POM (دائمًا 4.0.0).
. المجموعة أو المنظمة التي ينتمي إليها المشروع. غالبًا ما يتم التعبير عنه كاسم مجال مقلوب.
. الاسم الذي سيتم إعطاؤه لعنصر مكتبة المشروع (على سبيل المثال، اسم ملف JAR أو WAR الخاص به).
. نسخة المشروع الذي يجري بناؤه.
- كيف ينبغي تعبئة المشروع. الإعدادات الافتراضية هي "jar" لتغليف ملف JAR. استخدم "war" لتغليف ملف WAR.
ملحوظة | عندما يتعلق الأمر باختيار نظام الإصدار، يوصي سبرينج باتباع نهج الإصدار الدلالي. |
في هذه المرحلة، لديك مشروع Maven بسيط ولكنه قادر.
Maven جاهز الآن لبناء المشروع. يمكنك الآن تنفيذ العديد من أهداف دورة حياة البناء باستخدام Maven، بما في ذلك أهداف تجميع كود المشروع، وإنشاء حزمة مكتبة (مثل ملف JAR)، وتثبيت المكتبة في مستودع تبعية Maven المحلي.
لتجربة البناء، قم بإصدار ما يلي في سطر الأوامر:
تجميع mvn
سيؤدي هذا إلى تشغيل Maven وإخباره بتنفيذ هدف الترجمة . عند الانتهاء، يجب أن تجد ملفات .class المترجمة في دليل الهدف/الفئات .
نظرًا لأنه من غير المرجح أن ترغب في توزيع ملفات .class أو العمل معها مباشرةً، فمن المحتمل أن ترغب في تشغيل هدف الحزمة بدلاً من ذلك:
حزمة ام في ان
سيقوم هدف الحزمة بتجميع كود Java الخاص بك، وإجراء أي اختبارات، والانتهاء من خلال تعبئة الكود في ملف JAR داخل الدليل الهدف . سيعتمد اسم ملف JAR على
و
> الخاصين بالمشروع. على سبيل المثال، بالنظر إلى الحد الأدنى من ملف pom.xml من قبل، سيتم تسمية ملف JAR بـ gs-maven-0.1.0.jar .
لتنفيذ ملف JAR، قم بتشغيل:
java -jar target/gs-maven-0.1.0.jar
ملحوظة | إذا قمت بتغيير قيمة من "jar" إلى "war"، فستكون النتيجة ملف WAR داخل الدليل الهدف بدلاً من ملف JAR. |
يحتفظ Maven أيضًا بمستودع التبعيات على جهازك المحلي (عادةً في دليل .m2/repository في دليلك الرئيسي) للوصول السريع إلى تبعيات المشروع. إذا كنت ترغب في تثبيت ملف JAR الخاص بمشروعك على هذا المستودع المحلي، فيجب عليك استدعاء هدف install
:
تثبيت ام في ان
سيقوم هدف التثبيت بتجميع كود مشروعك واختباره وتعبئته ثم نسخه إلى مستودع التبعية المحلي، ليكون جاهزًا لمشروع آخر للإشارة إليه باعتباره تبعية.
بالحديث عن التبعيات، حان الوقت الآن لإعلان التبعيات في بناء Maven.
نموذج Hello World البسيط مستقل تمامًا ولا يعتمد على أي مكتبات إضافية. ومع ذلك، تعتمد معظم التطبيقات على المكتبات الخارجية للتعامل مع الوظائف الشائعة والمعقدة.
على سبيل المثال، افترض أنه بالإضافة إلى قول "Hello World!"، فأنت تريد أن يقوم التطبيق بطباعة التاريخ والوقت الحاليين. بينما يمكنك استخدام مرافق التاريخ والوقت في مكتبات Java الأصلية، يمكنك جعل الأمور أكثر إثارة للاهتمام باستخدام مكتبات Joda Time.
أولاً، قم بتغيير HelloWorld.java ليبدو بالشكل التالي:
src/main/java/hello/HelloWorld.java
link : complete / src / main / java / hello / HelloWorld . java [ role = include ]
هنا يستخدم HelloWorld
فئة LocalTime
الخاصة بـ Joda Time للحصول على الوقت الحالي وطباعته.
إذا كنت تريد تشغيل mvn compile
لبناء المشروع الآن، فسوف تفشل عملية الإنشاء لأنك لم تعلن عن Joda Time باعتباره تبعية للترجمة في عملية الإنشاء. يمكنك إصلاح ذلك عن طريق إضافة الأسطر التالية إلى pom.xml (ضمن عنصر
):
< dependencies >
link:complete/pom.xml[role=include]
dependencies >
تعلن كتلة XML هذه عن قائمة التبعيات للمشروع. على وجه التحديد، تعلن عن تبعية واحدة لمكتبة Joda Time. ضمن عنصر
، يتم تحديد إحداثيات التبعية بواسطة ثلاثة عناصر فرعية:
- المجموعة أو المؤسسة التي تنتمي إليها التبعية.
- المكتبة المطلوبة.
- الإصدار المحدد من المكتبة المطلوبة.
بشكل افتراضي، يتم تحديد نطاق كافة التبعيات على أنها تبعيات compile
. أي أنها يجب أن تكون متاحة في وقت الترجمة (وإذا كنت تقوم بإنشاء ملف WAR، بما في ذلك المجلد /WEB-INF/libs الخاص بـ WAR). بالإضافة إلى ذلك، يمكنك تحديد عنصر
لتحديد أحد النطاقات التالية:
provided
- التبعيات المطلوبة لتجميع كود المشروع، ولكن سيتم توفيرها في وقت التشغيل بواسطة حاوية تقوم بتشغيل الكود (على سبيل المثال، Java Servlet API).
test
- التبعيات المستخدمة لتجميع الاختبارات وتشغيلها، ولكنها ليست مطلوبة لبناء أو تشغيل كود وقت تشغيل المشروع.
الآن إذا قمت بتشغيل mvn compile
أو mvn package
، فيجب على Maven حل تبعية Joda Time من مستودع Maven المركزي وسيكون البناء ناجحًا.
قم أولاً بإضافة JUnit باعتباره تبعية إلى pom.xml الخاص بك، في نطاق الاختبار:
link:complete/pom.xml[role=include]
ثم قم بإنشاء حالة اختبار مثل هذا:
src/test/java/hello/GreeterTest.java
link : complete / src / test / java / hello / GreeterTest . java [ role = include ]
يستخدم Maven مكونًا إضافيًا يسمى "surefire" لتشغيل اختبارات الوحدة. يقوم التكوين الافتراضي لهذا البرنامج المساعد بتجميع وتشغيل كافة الفئات في src/test/java
باسم مطابق *Test
. يمكنك إجراء الاختبارات على سطر الأوامر مثل هذا
اختبار ام في ان
أو فقط استخدم خطوة mvn install
كما أظهرنا أعلاه (يوجد تعريف لدورة الحياة حيث يتم تضمين "الاختبار" كمرحلة في "التثبيت").
إليك ملف pom.xml
المكتمل:
pom.xml
link:complete/pom.xml[role=include]
ملحوظة | يستخدم ملف pom.xml المكتمل البرنامج الإضافي Maven Shade لتسهيل عملية جعل ملف JAR قابلاً للتنفيذ. ينصب تركيز هذا الدليل على البدء باستخدام Maven، وليس استخدام هذا البرنامج الإضافي المحدد. |
تهانينا! لقد قمت بإنشاء تعريف مشروع Maven بسيط ولكنه فعال لبناء مشاريع Java.
قد تكون الأدلة التالية مفيدة أيضًا:
بناء مشاريع جافا مع Gradle
https://raw.githubusercontent.com/spring-guides/getting-started-macros/main/footer.adoc