لقطة Maven: ما هي ولماذا تحتاجها؟ شرح للمبتدئين

مدرب بايثون أونلاين للمبتدئين

تعلم Python بسهولة دون إرهاق نظري. حل مهام عملية مع التحقق التلقائي واكتب الكود مباشرة في المتصفح.

ابدأ الدورة

مقدمة: التعرف على الإصدار "الحي"

\n\n

تخيل أنك تعمل على مشروع Java كبير يتكون من عشر وحدات. وحدة واحدة (مثل core-api) يتم تطويرها باستمرار بواسطة مطور آخر. تريد استخدام أحدث تطوراته، لكن الإصدار الرسمي (1.0.0) لن يصدر إلا بعد شهر. ماذا تفعل؟ هل تنتظر؟ تنسخ الكود؟ تذهب إلى زميلك وتطلب منه تجميع ملف JAR؟

\n\n

هنا يأتي دور لقطة Maven — إصدار خاص من القطعة الأثرية يحتوي دائمًا على أحدث بناء. في هذه المقالة، سنشرح ما هي اللقطة بكلمات بسيطة، وكيف تختلف عن الإصدار النهائي العادي، ولماذا لا يخلو أي مشروع Java حديث منها.

\n\n

1. ما هي لقطة Maven؟ (شرح للمبتدئين)

\n\n

في عالم Maven، كل قطعة أثرية (مكتبة، وحدة) لها ثلاثة إحداثيات: groupId و artifactId و version. يمكن أن يكون الإصدار من نوعين:

\n\n
    \n
  • الإصدار النهائي (Release) — إصدار ثابت ومستقر (مثل 1.0.0، 2.3.1). لا يتغير أبدًا.
  • \n
  • اللقطة (Snapshot) — إصدار "حي" وقابل للتغيير (مثل 1.0.0-SNAPSHOT، 2.0.0-SNAPSHOT). إنها مسودة يمكن تحديثها في كل مرة يتم فيها البناء.
  • \n
\n\n

الفكرة الرئيسية: اللقطة تشير دائمًا إلى أحدث إصدار من الكود في فرع التطوير. إذا أضفت تبعية على 1.0.0-SNAPSHOT، فسيتحقق Maven في كل بناء مما إذا كان هناك إصدار جديد من هذه اللقطة، وسيقوم بتنزيله.

\n\n

2. لماذا نحتاج اللقطة؟ سيناريوهات الاستخدام الرئيسية

\n\n

تحل اللقطة ثلاث مشاكل رئيسية في التطوير الجماعي:

\n\n

2.1. التكامل المستمر (CI/CD)

\n

تخيل أن خادم CI الخاص بك (Jenkins، GitLab CI) يقوم ببناء المشروع كل 5 دقائق. إذا كنت تستخدم إصدارات عادية، فسيتعين عليك تغيير رقم الإصدار يدويًا كل دقيقة. مع اللقطة، لا حاجة لذلك — الإصدار 1.0.0-SNAPSHOT سيكون دائمًا الأحدث.

\n\n

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

\n

في المشاريع متعددة الوحدات (مثل backend، frontend-api، common)، غالبًا ما تشير الوحدات إلى بعضها البعض. بينما يكون التطوير نشطًا، من المناسب استخدام تبعيات SNAPSHOT — فهي تسحب أحدث التغييرات تلقائيًا.

\n\n

2.3. اختبار التكاملات قبل الإصدار النهائي

\n

لنفترض أن الفريق (أ) يكتب مكتبة auth-lib، والفريق (ب) يستخدمها. ينشر الفريق (أ) auth-lib:2.0.0-SNAPSHOT، ويضيف الفريق (ب) هذه التبعية ويرى على الفور الطرق الجديدة. إذا حدث خطأ ما، يمكن العودة بسرعة إلى الإصدار النهائي المستقر.

\n\n

3. كيف تبدو اللقطة في ملف pom.xml الحقيقي؟

\n\n

يكفي إضافة اللاحقة -SNAPSHOT إلى الإصدار. إليك مثال:

\n\n
<project>\n    <modelVersion>4.0.0</modelVersion>\n    <groupId>com.pythonlib</groupId>\n    <artifactId>my-utils</artifactId>\n    <version>1.0.0-SNAPSHOT</version>  <!-- هذه لقطة -->\n    <packaging>jar</packaging>\n</project>\n
\n\n

وإليك كيف تقوم بتوصيل لقطة مشروع آخر في ملف pom.xml الخاص بك:

\n\n
<dependencies>\n    <dependency>\n        <groupId>com.otherteam</groupId>\n        <artifactId>auth-lib</artifactId>\n        <version>2.0.0-SNAPSHOT</version>\n    </dependency>\n</dependencies>\n
\n\n

لاحظ: Maven افتراضيًا لا يخزن اللقطة مؤقتًا إلى الأبد. يتحقق من التحديثات مرة واحدة يوميًا (افتراضيًا). ولكن يمكنك إجباره على تحديث جميع تبعيات اللقطة باستخدام العلم -U:

\n\n
mvn clean install -U\n
\n\n

4. اللقطة مقابل الإصدار النهائي: الفروق الرئيسية

المدونات

توصيات الكتب