أهم 5 أفكار وموضوعات مثيرة لمشروع مخضرم متعدد الوحدات للمبتدئين [2022]
نشرت: 2021-05-27نظرًا لأن أي مشروع يصبح أكثر تعقيدًا وطبقات ، فإن الطريقة الصحيحة لإدارته هي تقسيمه إلى وحدات مختلفة. في Maven ، في حين أنه من الممكن ربط هذه المشاريع المتعددة على أنها تبعيات ، إلا أنها تجعل عملية البناء أكثر تعقيدًا. لذلك ، فإن النهج المفضل هو هيكلة المشروع باعتباره مشروعًا متعدد الوحدات ونقل الباقي إلى Maven.
جدول المحتويات
فوائد استخدام وحدات متعددة في Maven
الميزة المهمة لاستخدام وحدات متعددة بدلاً من حقن التبعية أو أي إجراء آخر هو أنه يقلل من الازدواجية. لفهم هذا بشكل أفضل ، افترض أنك تعمل على تطبيق يتكون من وحدتين - دعنا نقول وحدة الواجهة الخلفية ووحدة الواجهة الأمامية.
إذا كنت تعمل على هاتين الوحدتين وقمت بتغيير بعض الوظائف التي تؤثر على كل من الوحدات ، فستحتاج إلى بناء كل من الوحدات أو المكونات بشكل منفصل بدون أداة بناء متخصصة. أو يجب عليك كتابة برنامج نصي لتجميع التعليمات البرمجية وتشغيل الاختبارات وعرض النتائج النهائية.
الآن ، إذا زاد التعقيد بشكل أكبر وكان مشروعك يحتوي على أكثر من وحدتين ، فسيصبح من الصعب بشكل تدريجي تنفيذ هذه المهمة بدون أداة بناء متخصصة. علاوة على ذلك ، في مشاكل العالم الحقيقي ، قد تتطلب مشاريعك بعض مكونات Maven الإضافية لأداء بعض العمليات الحاسمة خلال دورة حياة البناء بأكملها ، أو مشاركة التبعيات ، أو تضمين مشاريع BOM الأخرى.
نتيجة لهذه التحديات ، تعد الوحدات النمطية المتعددة في Maven مفيدة للغاية وتتيح لك إنشاء وحدات التطبيق في سطر أوامر واحد. كما يسمح لك بمشاركة كمية هائلة من البيانات والتكوين بين وحدات متعددة بسلاسة.
اقرأ أيضًا: إجابة سؤال مقابلة Maven
المصطلحات الأساسية التي يجب معرفتها فيما يتعلق بالمشاريع متعددة الوحدات في Maven
1. POM الأصل (وحدة كائن المشروع)
كل ملف pom.xml في Maven - لدعم الميراث - له POM الأصل ، المعروف باسم Super POM. يمكن أن يوجد هذا في ثنائيات Maven ، ويمكنك أيضًا دمج الملفين لإنشاء POM الفعال.
لذلك ، يمكنك إنشاء ملف pom.xml الخاص بك ليكون بمثابة الأصل لمشروعك. بمجرد القيام بذلك ، يمكنك إضافة جميع التبعيات والتكوين ، وتعيينها كأصل للوحدات الفرعية ، وتمكين الوراثة. باستثناء الميراث ، توفر Maven أيضًا التجميع. يُعرف POM الأصل الذي يستفيد من وظيفة التجميع باسم POM التجميعي - يعلن هذا النوع من POM الوحدات النمطية الفرعية بشكل صريح في ملف pom.xml.
2. وحدات فرعية
يمكن فهم المشاريع الفرعية ، المعروفة أيضًا باسم الوحدات الفرعية ، على أنها وحدات Maven القياسية التي ترث من POM الأصل. باستخدام الوراثة ، تشترك الوحدات النمطية في العديد من التبعيات والتكوينات. ومع ذلك ، إذا كنت بحاجة إلى إنشاء المشروع بسرعة ، فستحتاج إلى الإعلان صراحة عن الوحدات الفرعية في POM الأصل ، مما يجعله إجمالي POM.
3. المشروع البسيط متعدد الوحدات
التطبيق والاستخدام هما وحدتان تم تضمينهما في مشروع Simple Multi-Module Project. وحدة الاستخدام مطلوبة لتوفير طريقة ثابتة للانضمام إلى سلاسل مختلفة أو إلحاقها باستخدام مكتبة Apache Commons Lang ، وتعد وحدة التطبيق ضرورية لاستدعاء الوحدة النمطية. هذا مقتطف من ملف app.java:
simple-multi / app / src / main / java / app / App.java
تطبيق فئة عامة {
العامة الثابتة الفراغ الرئيسي (سلسلة [] args) {
System.out.println (تطبيق جديد (). تحية ("العالم!")) ؛
}
تحية سلسلة عامة (اسم السلسلة) {
إرجاع Util.join ("مرحبًا" ، الاسم) ؛
}
}
لبناء المشروع ، قم بتشغيل
$ cd simple-multi
اختبار نظيف
يبني مُنشئ الكود الخاص بـ Maven كلا من الوحدات النمطية لمشروعك بالترتيب الصحيح ، ويقوم بإجراء الاختبارات اللازمة ، ويخرج النتائج بتنسيق ملخص يسهل فهمه ، كما يلي:
4. هيكل مشروع متعدد الوحدات
إليك مخطط مشروع بسيط متعدد الوحدات:
الدليل simple-multi هو الدليل الجذر وهو موجود في الجزء العلوي من المشروع بأكمله. يحتوي على POM ذو المستوى الأعلى (Parent POM) ، لكن هذا الدليل الرئيسي لا يحتوي على أي مجلد مصدر.
يحتوي دليل المستوى الأعلى أيضًا على التطبيق والاستفادة ، وهي مشاريع Maven العادية مع الدلائل وملف pom.xml.
يختلف دليل عمليات الشراء ذو المستوى الأعلى والوحدة النمطية بشكل طفيف عن دليل عمليات الشراء العادي. دعونا ننظر بالتفصيل إلى ما تحتويه:
5. أعلى مستوى بوم
مطلوب POM الأصل أو POM عالي المستوى من قبل Maven Multi-Module Project في الدليل الجذر.
يحدد دليل عمليات المشروع ذو المستوى الأعلى الجوانب المهمة وإحداثيات المشروع مثل معرف الأداة والإصدار ومعرف المجموعة ، كما هو الحال في أي مشروع عادي. ومع ذلك ، فإن نوع العبوة لهذا ليس في شكل الحرب أو الجرة المعتادة ولكن مثل بوم. هذا لأن وحدة المستوى الأعلى لا تحتوي على أي دليل مصدر آخر. تضيف الوحدات النمطية / عناصر الوحدة التطبيق وتستخدم الوحدات النمطية.
محتويات هذا الملف تشمل:
بسيط متعدد / pom.xml
<project xmlns = ”http://maven.apache.org/POM/4.0.0 ″ xmlns: xsi =” http://www.w3.org/2001/XMLSchema-instance ”
xsi: schemaLocation = ”http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd”>
<modelVersion> 4.0.0 </modelVersion>
<groupId> org.codetab </groupId>
<artifactId> simple-multi </artifactId>
<الإصدار> 1.0 </version>
<packaging> بوم </packaging>
<وحدات>
<module> التطبيق </ module>
<module> استخدم </ module>
</modules>
</project>
لتلخيص ذلك ، يحدد POM ذو المستوى الأعلى نوع حزمة pom ويسرد بوضوح جميع الوحدات الفرعية.
ضع في اعتبارك أنه لا داعي للقلق بشأن الطلب أثناء الإعلان عن الوحدات الفرعية في Parent POM حيث يستخدم Maven مفاعلًا لطلب الوحدات المدرجة بشكل صحيح. في simple-multi ، يبني maven استخدام الوحدة ثم التطبيق لأن التطبيق يعتمد على الاستخدام.
5. وحدة بوم
يحتوي مجلد Module POM على مجلد مصدر عادي وملف pom.xml الخاص به. محتوى هذا الاستخدام / pom.xml هو:
استخدام / pom.xml
<project xmlns = ”http://maven.apache.org/POM/4.0.0 ″ xmlns: xsi =” http://www.w3.org/2001/XMLSchema-instance ”
xsi: schemaLocation = ”http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd”>
<modelVersion> 4.0.0 </modelVersion>
<الوالد>
<groupId> org.codetab </groupId>
<artifactId> simple-multi </artifactId>
<الإصدار> 1.0 </version>
</parent>
<artifactId> استخدام </ artifactId>
<الخصائص>
<project.build.sourceEncoding> UTF-8 </project.build.sourceEncoding>
<maven.compiler.source> 1.8 </maven.compiler.source>
<maven.compiler.target> 1.8 </maven.compiler.target>
</properties>
<التبعيات>
<الاعتماد>
<groupId> org.apache.commons </groupId>
<artifactId> commons-lang3 </artifactId>
<الإصدار> 3.6 </version>
<الاعتماد>
<الاعتماد>
<groupId> الوحدة </ groupId>
<artifactId> الوحدة </ artifactId>
<version> 4.12 </version>
اختبار <scope> </scope>
<الاعتماد>
<التبعيات>
</project>
ليست هناك حاجة لتحديد معرّف المجموعة والإصدار للوحدة النمطية حيث سيتم توريثهما من الأصل. تحدد مجموعة التبعيات / التبعية تبعيات وحدة الاستخدام - commons-lang3 و JUnit.
الآن ، لنلقِ نظرة على app / pom.xml ، والذي يشبه إلى حدٍ بعيد use / pom.xml ، باستثناء كتلة التبعيات الموضحة أدناه:
app / pom.xml
….
<التبعيات>
<الاعتماد>
<groupId> org.codetab </groupId>
<artifactId> استخدام </ artifactId>
<الإصدار> 1.0 </version>
<الاعتماد>
….
<التبعيات>
تستخدم وحدة التطبيق طرقًا من الوحدة النمطية ، ولهذا الغرض ، يحدد app / pom.xml الاستخدام باعتباره التبعية.
لتلخيص كل الأشياء الموضحة أعلاه:
مشروع المستوى الأعلى (المشروع الأصلي) ،
- يعرّف pom.xml ذي المستوى الأعلى ، والذي يحدد جميع الإحداثيات والوحدات الفرعية ، ويعيّن نوع الحزمة على شكل pom.
- يحتوي على مجلدات الوحدات النمطية الإضافية.
- لا يحتوي على مجلدات المصدر.
كل مجلد من مجلدات الوحدة ليس سوى أدلة مشروع Maven العادية. ومع ذلك ، يحتوي ملف pom.xml على:
- يحدد العنصر الأصل أصل الوحدة النمطية.
- يتم تحديد إحداثيات الوحدة النمطية في عنصر artifactID. لم يتم ذكر معرف المجموعة والإصدار لأنها موروثة من الإحداثيات الأصلية.
- التبعية ، إذا كانت إحدى الوحدات تعتمد على أخرى ، يتم ذكرها في عنصر التبعيات / التبعية.
تنفيذ المشروع متعدد الوحدات
يمكن استخدام الأمر $ mvn clean package لتجميع واختبار وحزم الوحدة المتعددة. ومع ذلك ، لتشغيله باستخدام المكون الإضافي maven-exec-plugin ، يتطلب الخطوات التالية:
قم بتشغيل الأوامر التالية:
$ cd simple-multi
تثبيت نظيف
$ mvn exec: java -pl app -Dexec.mainClass = app.App
يقوم أمر التثبيت بتثبيت الوحدات النمطية في المستودع المحلي الخاص بك ، حيث يمكنك بعد ذلك تشغيل المشروع. يقوم تطبيق option -pl بإعلام المكوِّن الإضافي exec بوحدة التطبيق وتشغيل تطبيق فئته. بدون التثبيت ، تفشل عملية البناء ، لأن Maven لا يمكنه تنزيل وحل تبعية الوحدة النمطية.
ومع ذلك ، من الصعب جدًا تثبيت المشروع في مستودع محلي في كل مرة قبل كل تشغيل ، خاصةً عندما تكون في مرحلة التطوير. لتسهيل ذلك ، يمكنك تنفيذ الوحدة المتعددة في Eclipse IDE مباشرةً دون تنفيذ خطوة التثبيت.
تعلم دورات تطوير البرمجيات عبر الإنترنت من أفضل الجامعات في العالم. اربح برامج PG التنفيذية أو برامج الشهادات المتقدمة أو برامج الماجستير لتتبع حياتك المهنية بشكل سريع.
خاتمة
نأمل أن تساعدك هذه المقالة في البدء في عملية Maven Multi-Module. كما هو الحال مع أي شيء جديد ، يتعلق الأمر فقط بالحصول على التعليق الأولي له. بمجرد فهمك للبنية الأساسية والأداء ، ستكون في طريقك لإدارة وحدات متعددة بسلاسة في Maven.
إذا كنت مهتمًا بمعرفة المزيد حول تطوير البرامج كاملة المكدس ، فراجع برنامج upGrad & IIIT-B التنفيذي PG في تطوير البرمجيات - التخصص في تطوير المكدس الكامل المصمم للمهنيين العاملين ويقدم أكثر من 500 ساعة من التدريب الصارم ، 9 + المشاريع ، والتعيينات ، وحالة خريجي IIIT-B ، ومشاريع التخرج العملية العملية والمساعدة في العمل مع الشركات الكبرى.
ما هي المشاريع متعددة الوحدات؟
تمكّنك الوحدات النمطية المتعددة من تجميع القطع الأثرية الشائعة في وحدة واحدة لتقليل عدد الوحدات المطلوبة لبناء مشروع ونشره. يمكن إنشاء مشاريع متعددة الوحدات من وحدتين أو أكثر من خلال تحديد العلاقة بين الوالدين والطفل بين هذه الوحدات. تسمى الوحدة الرئيسية لمشروع متعدد الوحدات الوحدة النمطية الجذرية. تسمى الوحدة الفرعية لمشروع متعدد الوحدات الوحدة الفرعية. وحدة الجذر هي حجر الزاوية لبناء متعدد الوحدات. لا يمكن بناء الوحدات الفرعية بمفردها ، بل يجب بناؤها جنبًا إلى جنب مع الوحدة النمطية الجذر.
ما هو ملف نموذج كائن المشروع في مافن؟
ملف نموذج كائن المشروع (POM) هو ملف يصف المشروع. إنها وحدة العمل الأساسية التي ينشر المطورون من خلالها القطع الأثرية إلى المستودع. نموذج كائن المشروع هو ملف نصي بسيط يعرّف المشروع ، ويسرد مكوناته ، ويحدد ما يفعله. يعد نموذج كائن المشروع مكونًا رئيسيًا في إطار عمل إدارة مشروع برنامج Maven. إنه نوع خاص من مستندات XML التي يتكون منها مشروع Maven. يمكن اعتبار ملف pom بمثابة وصف لمشروع. يخبر Maven ما يدور حوله المشروع بالإضافة إلى وصف لكل وحدة من الوحدات في المشروع وتبعياتها وإصداراتها. الوحدات هي اللبنات الأساسية لمشروع Maven. تُستخدم الوحدات وتوابعها لبناء المشروع النهائي.
كيفية إنشاء مشروع مخضرم متعدد الوحدات؟
لإنشاء مشروع متعدد الوحدات ، تحتاج إلى تحديد بوم رئيسي والتأكد من أن جميع الوحدات الفرعية ترثه. من المهم أيضًا ملاحظة أنه يمكنك أيضًا وضع جميع الوحدات الفرعية في مستودع واحد وتوجيه pom الأصل إلى ذلك. يتكون المشروع متعدد الوحدات المخضرم من بوم أصلي وواحد أو أكثر من الوحدات الفرعية. يمكن لـ pom الأصل تحديد البيانات الوصفية للمشروع متعدد الوحدات ، مثل معرف الأداة والإصدار والتعبئة والتبعيات. يمكن للوحدات النمطية الفرعية أن ترث البيانات الوصفية للوالد ، ويمكن أن يحدد بوم الأصل تكوينًا عالي المستوى للمشروع ، مثل تنظيم المشروع ووصفه.