بنية مشروع Maven
POM ودورة الحياة والتبعيات
بنية مشروع Maven درس مجاني في Java Academy على CoddyKit. هذا هو الدرس 1 من أصل 4. يمكنك قراءة الدرس كاملاً أدناه مجاناً — ثم تمرن عليه مباشرة في المتصفح باستخدام محرر أكواد مدمج ومدرس ذكاء اصطناعي متاح 24/7. هذا الدرس جزء من مسار التعلم في Java Academy، وتقدمك يتزامن عبر الويب وتطبيق CoddyKit. تتضمن دورة Java Academy 4 دروس في المجموع.
بنية مشروع Maven
إن Maven أداة بناء ومدير تبعيات يقومان على مبدأ واحد: الاصطلاح بدلًا من الإعداد. اتبع بنيته القياسية، وستعمل معظم الأمور من دون إعداد يُذكر. يغطي هذا الدرس البنية وPOM وإدارة التبعيات.
بنية الأدلة القياسية
يتوقع Maven بنية ثابتة:
src/main/java— الشفرة المصدرية للإنتاج.src/main/resources— موارد الإنتاج.src/test/java— الشفرة المصدرية للاختبارات.target/— ناتج البناء (يُنشأ تلقائيًا).
ملف POM
جوهر مشروع Maven هو pom.xml — أي نموذج كائن المشروع. ويعلن هذا الملف الإحداثيات والتبعيات والإضافات وإعدادات البناء بصيغة XML.
<project>
<modelVersion>4.0.0</modelVersion>
<groupId>com.example</groupId>
<artifactId>my-app</artifactId>
<version>1.0.0</version>
<packaging>jar</packaging>
</project>الإحداثيات: GAV
يُعرَّف كل artifact بواسطة groupId وartifactId وversion (GAV). وتحدد هذه الإحداثيات بشكل فريد اسم مشروعك وكل تبعية تضيفها.
التصريح بالتبعيات
تُدرج التبعيات داخل <dependencies>. وينزّلها Maven، مع تبعياتها الانتقالية، من مستودعات مثل Maven Central إلى ذاكرة تخزين محلية مؤقتة.
<dependencies>
<dependency>
<groupId>org.junit.jupiter</groupId>
<artifactId>junit-jupiter</artifactId>
<version>5.10.0</version>
<scope>test</scope>
</dependency>
</dependencies>نطاقات التبعيات
يحدد النطاق متى تكون التبعية موجودة في classpath:
- compile — في كل المواضع (افتراضيًا).
- provided — عند التجميع فقط؛ توفرها الحاوية وقت التشغيل.
- runtime — وقت التشغيل والاختبارات، وليس عند التجميع.
- test — لتجميع الاختبارات وتنفيذها فقط.
التبعيات الانتقالية
إذا كان A يعتمد على B وكان B يعتمد على C، يمنحك Maven التبعية C تلقائيًا — وهذا ما يُسمى الانتقالية. وعند تعارض الإصدارات، يحل Maven التعارض باختيار التعريف الأقرب في شجرة التبعيات.
دورة حياة البناء
يحدد Maven دورة حياة مرتبة من المراحل. وتشمل دورة الحياة الافتراضية، بالترتيب: validate وcompile وtest وpackage وverify وinstall وdeploy. ويؤدي تشغيل مرحلة إلى تشغيل جميع المراحل السابقة لها أيضًا.
الأوامر الشائعة
mvn compile— تجميع المصادر الرئيسية.mvn test— تشغيل اختبارات الوحدة.mvn package— بناء JAR أو WAR داخلtarget/.mvn install— نسخ artifact إلى مستودعك المحلي كي تتمكن المشاريع الأخرى من استخدامه.
المستودع المحلي
تُخزَّن artifacts التي تم تنزيلها مؤقتًا في ~/.m2/repository. وتعيد عمليات البناء اللاحقة استخدام هذه الذاكرة المؤقتة بدلًا من التنزيل مرة أخرى. ويضع mvn install artifact الخاص بك هناك، بحيث تتمكن المشاريع الشقيقة من الاعتماد عليه.
المشاريع متعددة الوحدات
يمكن لملف POM رئيسي يتضمن <packaging>pom</packaging> أن يسرد الوحدات الفرعية داخل <modules>. ويبني Maven هذه الوحدات وفق ترتيب التبعيات، مما يتيح لنظام كبير مشاركة الإعدادات والإصدارات من مكان واحد.
تحقق سريع
اختبر مدى فهمك لبنية Maven.
مراجعة
تعلمت أساسيات Maven:
- الاصطلاح بدلًا من الإعداد مع البنية القياسية
src/main/java. - يعلن POM إحداثيات GAV والتبعيات والإضافات.
- تتحكم النطاقات (compile وprovided وruntime وtest) في ظهور التبعيات في classpath.
- التبعيات انتقالية؛ وتُحل التعارضات باختيار التعريف الأقرب.
- تعني دورة الحياة المرتبة أن تشغيل أي مرحلة يشغّل جميع المراحل السابقة لها.
الأسئلة الشائعة
هل درس «بنية مشروع Maven» مجاني؟
نعم — نص درس «بنية مشروع Maven» كامل متاح مجاناً هنا على الويب. لتمرينه بشكل تفاعلي (محرر أكواد مدمج ومدرس ذكاء اصطناعي متاح 24/7) وفتح باقي دورة Java Academy، انتقل إلى CoddyKit PRO. تتضمن دورة Java Academy 4 دروس في المجموع.
ماذا ستتعلم في «بنية مشروع Maven»؟
POM ودورة الحياة والتبعيات تتمرن على Java Academy مع أكواد عملية تشغلها مباشرة في المتصفح، ومدرس ذكاء اصطناعي متاح 24/7 يجيب على أسئلتك أثناء عملك.
هل أحتاج إلى خبرة سابقة لأبدأ Java Academy؟
لا تُشترط خبرة سابقة. Java Academy على CoddyKit منظم للمبتدئين حتى المتقدمين، لذا يمكنك البدء من هنا أو من البداية والتقدم بسرعتك الخاصة. هذا هو الدرس 1 من أصل 4.
كم من الوقت يستغرق درس «بنية مشروع Maven»؟
معظم دروس CoddyKit تستغرق حوالي 5–10 دقائق. كل منها موجز وتفاعلي، لذا تحرز تقدماً مستمراً وتستأنف من حيث توقفت عبر الويب والتطبيق.
هل يمكنني كتابة وتشغيل أكواد في درس Java Academy هذا؟
نعم. كل درس في Java Academy يتضمن محرر أكواد مدمج، لذا تكتب وتشغل أكواداً حقيقية مباشرة في متصفحك وتحصل على تعليقات فورية من الذكاء الاصطناعي — بدون إعداد محلي.
جميع الدروس في هذه الدورة
- بنية مشروع Maven
- إضافات Maven وأهدافه
- أساسيات Gradle
- اختيار أداة البناء