ربما لم أكن موهوبًا ، وعندما قابلت مافن لأول مرة ، كنت في حيرة من أمري من خلال العديد من البرامج التعليمية غير المعروفة. في استخدامي لاحقًا ، وجدت أن معظم وظائف Maven لم تكن صعبة كما تخيلت.
هذه المقالة مخصصة للمبتدئين في Maven ، على أمل السماح لها بفهم Maven في أسرع وقت ممكن والاستمتاع بسلسلة من الفوائد التي يجلبها.
[سؤال بسيط]
قبل تقديم تفسير ، اطرح سؤالًا بسيطًا.
إذا كنت تقوم بتطوير مشروعين Java تحت Eclipse ، وتدعوهما A و B ، فإن بعض الوظائف في المشروع A تعتمد على فئات معينة في المشروع B ، وكيفية الحفاظ على هذا التبعية؟
لقد فعلت ذلك قبل استخدام Maven ، المشروع B المعبأ كجرة ، واستورد ملف JAR من B تحت مكتبة المشروع A.
هذا له عيوب واضحة:
1. إذا تم العثور على خطأ في B أثناء عملية التطوير ، فيجب إعادة تعبئة B وإعادة تنسيقه للمشروع A.
2. عند التعاون في تطوير المشروع A ، من أجل التأكد من أنه يمكن تشغيله بشكل طبيعي ، إما اختيار الحزمة B في A ، أو اختيار نشر B مثل B وإبلاغ المطور عن كيفية استخدامه. من الواضح أن كلتا الطريقتين ليست جيدة جدًا. قد يتسبب الأول في مضيعة للموارد (على سبيل المثال ، قد يقوم المطور بتطوير مشاريع أخرى تعتمد على B ، والتي تم تخزينها محليًا) ، في حين أن الأخير سيحقق مخاطر على التشغيل العادي للمشروع (إذا تم تسليم العمل إلى العمل اليدوي ، فسيكون من المقرر أن يجلب معدل فشل معين).
لذلك ، من الواضح أن التحكم يدويًا في التبعيات بين المشاريع بهذه الطريقة هو نهج "سيء".
[مقدمة إلى Maven]
وفقًا لرأي المؤلف ، فإن وظيفة Maven الأساسية هي وصف التبعيات بين المشاريع بشكل معقول.
تحتوي جميع مشاريع Maven على ملف يدعى Pom.xml ، والذي يسجل <GroupId> <StifactId> <splex> وحقول أخرى. يتم ملء هذه الحقول عند إنشاء مشروع Maven ، وسيقوم Maven بتحديد موقع المشروع بناءً عليها.
علامة رئيسية أخرى في POM هي <rependencies> ، والتي يمكن أن تحتوي على العديد من العلامات <sependency> ، وتحت <redency> هي حقول التبعية مثل <GrowId> <StifactId> <splement> تم تقديمها أعلاه ، والتي تحدد إصدارًا فريدًا من المشروع.
pom.xml النموذجي [من مشروع Luajava]:
<project xmlns = "http://maven.apache.org/pom/4.0.0" http://maven.apache.org/xsd/maven-4.0.0.xsd "> <Dodeversion> 4.0.0 </modelversion> <roupiD> org.keplerproject </rougiD> <StifactId> luajava </shifactid> <Url> http://maven.apache.org </url> <properties> <project.build.sourceencoding> utf-8 </project.build.sourceencoding> </sunaled> <build> <StifactId> maven-compiler-plugin </shintifactid> <الإصدار> 2.0.2 </version> <supturation> <source> 1.7 </ource> <target> 1.7 </target> </configuration> </tudafactid> </build> </build> <sperive> 3.8.1 </version>
[مكتبة مافن]
أخذ مشاريع A و B الآن فقط كمثال ، اكتب <sependency> في ملف POM للمشروع A ، وسيجد Maven مشروع B في مساحة العمل وإنشاء تبعيات. في هذا الوقت ، يمكن للمشروع A الوصول مباشرة إلى موارد الفصل في المشروع B ، وستظل نقطة الإيقاف في المشروع B قد تصل إلى خلال تصحيح أخطاء A.
بالإضافة إلى جمعية تبعية مساحة العمل ، يمكن لـ Maven أيضًا ربط المشاريع في صورة عن بعد. بشكل افتراضي ، إذا لم يكن هناك سجل مشروع مقابل في مساحة العمل ، فسيقوم Maven بالاتصال بالمستودع المركزي للبحث عن. إذا تم العثور عليها ، فسيتم تنزيل المشروع على المكتبة المحلية (توجد المكتبة المحلية في Windows في دليل .m2 لمستند المستخدم) وتعيين الجمعية تلقائيًا. هذه ميزة مريحة للغاية. عندما نحتاج إلى دعم حزمة جرة إضافية ، لم نعد نحتاج إلى تنزيله وتقديمه يدويًا. نحتاج فقط إلى لصق حقول التبعية المقابلة للمشروع إلى الموقع المناسب لل POM ، وترك الباقي إلى Maven لإكماله.
[مثال]
لذا ، كيف نعرف الحقول مثل GroupID للمشروع المطلوب؟
بشكل عام ، إذا كان المشروع الرسمي يدعم Maven ، فسيكون هناك عمومًا حقل تبعية على صفحته للنسخ ، ولكن هناك أيضًا موقف يتم فيه دعم Maven ولكن لا يتم إعطاء حقول تابعة. يتم الحفاظ على ميزات Maven للمشاريع الأخرى من قبل أطراف ثالثة ، ومن الصعب الحصول على دعم Maven من القنوات الرسمية.
لذلك ، فإن الحل المفضل للاستعلام عن حقول التبعية هو استخدام خدمة البحث في Maven للبحث.
هنا أوصي بعنوان: mvnrepository.com
فيما يلي مثال على استخدام Eclipse لربط برنامج تشغيل MySQLJDBC. قبل ذلك ، يرجى تأكيد أنه يدعم Maven في Help-> exclipse:
في الإصدار الجديد الرسمي من Eclipse ، فإن دعم Maven مدمج بالفعل. إذا كان الإصدار أقدم ، فيمكنك تثبيت المكون الإضافي Maven.
دعنا أولاً ننشئ مشروعًا جديدًا لـ Maven ، New-> Project-> MavenProject-> CreateAsimpleProject (Skiparchetypeselection).
ما يلي هو أهم خطوة. املأ حقول التبعية مثل مجموعة هذا المشروع. سيتم استخدام الحقول المملوءة هنا عندما تعتمد مشاريع أخرى عليها. الأجزاء غير المملوءة اختيارية:
بعد ذلك ، بحثنا عن "mysql jdbc" في mvnrepository.com
سرعان ما وجدنا النتيجة ونقرت لعرض معلومات الإصدار التفصيلي:
فيما يلي قائمة الإصدارات المتعددة واستخدام MySQL JDBC. هنا نختار الإصدار الجديد 5.1.34:
انسخ المحتويات الموجودة في مربع Maven واكتبها إلى Pom's <تبعيات>:
<project xmlns = "http://maven.apache.org/pom/4.0.0" http://maven.apache.org/xsd/maven-4.0.0.xsd "> <Dodeversion> 4.0.0 </modelversion> <roupiD> com.test </rougeid> <sepactid> maventest </stifactid> <splement> 0.0.1-snapshot </sepensid> <StifactId> mysql-connector-java </stifactid> <الإصدار> 5.1.34 </version> </repreadency> </
بعد انتهاء شريط قراءة التقدم ، يمكنك أن ترى أن هناك المزيد من تبعيات Maven في المشروع ، ويمكنك العثور على حزمة برنامج تشغيل JDBC التي قدمناها للتو:
[ميزات أخرى]
1. مصدر المرآة
من الواضح أن مستودع Maven Central يحتوي على حمولة كبيرة نسبيًا وليس في الصين ، وبالتالي فإن السرعة بطيئة جدًا وأحيانًا لا يمكن العثور على التبعيات. لذلك ، لا سيما في مناسبات تطوير الفريق الصغيرة ، سيؤدي بناء خادم Maven الخاص إلى تحسين الكفاءة بشكل كبير. فيما يلي أداة إنشاء صور Maven: Nexus: http://www.sonatype.org/nexus/
استخدمه لإنشاء مصدر صورة Maven الخاص بسرعة وسهولة ، ثم قم بتكوينه في إعدادات Maven.xml.
2. تنزيل كسول من رمز المصدر SRC
في بعض الأحيان ، نحتاج إلى الرجوع إلى الملف المصدر الذي يعتمد على المشروع. في هذا الوقت ، يمكننا محاولة النقر نقرًا مزدوجًا على ملف الفصل مباشرة. إذا كان هناك ملف مصدر في مصدر صورة Maven ، فسيتم تنزيله تلقائيًا إلى المنطقة المحلية ، وسيتم تحميل Eclipse وعرضها تلقائيًا.
3. تجميع تكوين المعلمة
يستخدم المؤلف نسخة Eclipseluna. إصدار مجموعة Java الافتراضي من Maven هو 1.5. يمكننا تحديد نسخة التجميع الخاصة به في POM لتحسينه إلى 1.7 (انظر علامة الإنشاء في Luajavapom) ؛ بالإضافة إلى ذلك ، سيتم أيضًا قراءة هذه الإعدادات وتكوينها بشكل صحيح بواسطة أدوات التشغيل الآلي مثل التكامل المستمر Jenkins.
لخص
ما سبق هو كل شيء عن فهم مافن بسرعة. آمل أن يكون ذلك مفيدًا للجميع. يمكن للأصدقاء المهتمين الاستمرار في الرجوع إلى الموضوعات الأخرى ذات الصلة على هذا الموقع. إذا كانت هناك أي أوجه قصور ، فيرجى ترك رسالة لإشارةها. شكرا لك يا أصدقائك لدعمكم لهذا الموقع!