ما هو مستودع مافن
عندما لا نستخدم Maven ، على سبيل المثال ، في الماضي ، اعتدنا على بناء مشاريع مع ANT ، فغالبًا ما نرى دليلًا فرعيًا يسمى /lib ، والذي يخزن العديد من ملفات جرة التبعية لجهة خارجية ، مثل log4j.jar ، junit.jar ، إلخ.
في كل مرة تقوم فيها بإنشاء مشروع ، تحتاج إلى إنشاء دليل A /LIB ثم نسخ زوج من ملفات JAR ، وهو مزدوج واضح. التكرار هو دائما نقطة انطلاق كابوس. لا تشترك مشاريع متعددة في نفس ملف JAR ، والتي لن تتسبب فقط في إهدار موارد القرص ، ولكن أيضًا تجعل إدارة الاتساق للإصدارات صعبة.
بالإضافة إلى ذلك ، إذا كنت تستخدم أدوات إدارة الإصدار مثل SVN (لا تستخدم أدوات إدارة الإصدار؟ جرب SVN الآن ، يمكن أن تساعدك في حل العديد من الصداع) ، فأنت بحاجة إلى إرسال عدد كبير من ملفات JAR إلى مكتبة التعليمات البرمجية ، ولكن أدوات إدارة الإصدار ليست ممتازة في التعامل مع الملفات الثنائية.
مستودع Maven هو حيث يتم وضع جميع ملفات JAR (الحرب ، الرمز البريدي ، POM ، إلخ). يمكن لجميع مشاريع Maven الحصول على جرة التبعية التي يحتاجونها من مستودع Maven نفسه ، مما يوفر موارد القرص. بالإضافة إلى ذلك ، نظرًا لأن جميع الجرار في مستودع Maven لديها إحداثيات خاصة بها ، والتي تخبر Maven معرف مجموعتها ، ومعرف المكون ، والنسخة ، وطريقة التغليف ، وما إلى ذلك ، يمكن لمشروع Maven إجراء إدارة إصدار التبعية بسهولة. لا يُطلب منك إرسال ملفات JAR إلى مستودع SCM ، يمكنك إنشاء مستودع Maven على مستوى المؤسسة لجميع الأعضاء لاستخدامه.
باختصار ، يساعدنا مستودع Maven على إدارة القطع الأثرية (الجرار بشكل رئيسي).
في Maven ، يمكن تسمية إخراج أي تبعية أو مكون إضافي أو بناء المشروع مكونًا.
يقوم Maven بتخزين جميع المكونات المشتركة لجميع المشاريع في موقع موحد. هذا الموقع الموحد يسمى المستودع. (المستودع هو المكان الذي يتم فيه تخزين التبعيات والمكونات الإضافية)
أي مكون لديه إحداثيات فريدة من نوعها. يحدد Maven مسار التخزين الفريد للمكون في المستودع بناءً على هذا الإحداثي.
تفسير مسار تخزين Maven في المستودع:
1. قم بإعداد المسار على أساس GroupID ، قم بتحويل فاصل الفترة إلى فاصل المسار ، أي تحويل "." ل "/" ؛ مثال: org.testng ---> org/testng
2. قم بإعداد المسار القائم على القطع الأثرية وتوصيل القطع الأثرية بالظهر: org/testng/testng
3. استخدم الإصدار لإعداد المسار وتوصيل الإصدار بالظهر: org/testng/testng/5.8
4. قم بتوصيل Artifactid بالإصدار مع واصلة فاصل إلى الخلف: ORG/TESTNG/TESTNG/5.8/TESNG-5.8
5. الحكم إذا كان المكون يحتوي على مصنف ، أضف واصلة الفاصل بعد البند 4 وأضف المصنف ، ORG/Testng/5.8/TESNG-5.8-JDK5
6. تحقق من امتداد المكون. في حالة وجود امتداد ، أضف فاصل الفترة والتمديد. يتم تحديد الامتداد عن طريق التعبئة ، org/testng/testng/5.8/tesng-5.8-jdk5.jar
في هذه المرحلة ، نفهم تفاصيل تخزين مكون Maven.
تصنيف مستودعات Maven:
يحتوي مستودع Maven على فئتين فقط: 1. Warehouse 2. المستودع البعيد ، الذي ينقسم إلى ثلاثة أنواع في المستودعات البعيدة: 2.1 Central Warehouse 2.2 Private Server 2.3 مستودعات عامة أخرى
1. المستودع المحلي ، كما يوحي الاسم ، هو المكان الذي يخزن فيه مافن مكونات محليًا.
ملاحظة: لن يتم إنشاء مستودع Maven المحلي بعد تثبيت Maven. يتم إنشاؤه فقط عند تنفيذ أمر Maven لأول مرة.
الموقع الافتراضي لمستودع Maven المحلي: سواء كان Windows أو Linux ، هناك دليل .m2/ مستودع/ مستودع في دليل المستخدم. هذا هو الموقع الافتراضي لمستودع Maven.
كيفية تغيير موقع المستودع المحلي الافتراضي لـ Maven: هنا نريد تقديم عنصر جديد: LocalRepository ، الموجود في ملف Maven.
1.1 قم بتغيير المستودع المحلي الذي يقوم بتكوين واجهة المستخدم: أولاً قم بإنشاء إعدادات.
<Teptors> <ConderPository> d:/maven_new_repository </localRepository> </settings>
في هذا الوقت ، يصبح عنوان المستودع المحلي لـ Maven d:/maven_new_repository. ملاحظة: ينتمي المستودع المحلي لـ Maven في هذا الوقت إلى نطاق المستخدم.
1.2 قم بتغيير التكوين المستودع المحلي على مستوى العالم: قم بتغيير التكوين في M2_HOME/CONF/STEPTIONS.XML ، طريقة تغيير التكوين هي نفسها أعلاه
ملاحظة: بعد هذا التغيير ، سيتأثر جميع المستخدمين ، وإذا تمت ترقية Maven ، فسيتم مسح جميع التكوينات ، لذلك يجب عليك نسخ ونسخة احتياطية من ملف M2_Home/Conf/Settings.xML مقدمًا.
لذلك: في ظل الظروف العادية ، لا ينصح بتكوين الإعدادات العالمية.
2. المستودع البعيد
2.1 عندما يتعلق الأمر بالمستودعات البعيدة ، ابدأ بأكثر المستودعات المركزية الأساسية. المستودع المركزي هو المستودع البعيد الافتراضي. عند تثبيت Maven ، يأتي مع تكوين المستودع المركزي.
في تجميع وميراث Maven ، قلنا أن جميع مشاريع Maven سترث Super Pom. على وجه التحديد ، إذا كانت POM التي تحتوي على التكوينات التالية ، فإننا نسميها Super Pom
<SpoSitories> <Sropository> <Id> Central </quar> <name> مستودع مركزي </name> <Url> http://repo.maven.apache.org/maven2 </url> <rayout> الافتراضي </layout> <snapshots> false> false>
يحتوي المستودع المركزي على مكونات Java مفتوحة المصدر الأكثر شهرة ، بالإضافة إلى رمز المصدر ومعلومات المؤلف و SCM والمعلومات ومعلومات الترخيص ، وما إلى ذلك بشكل عام ، يمكن تنزيل تبعيات مشروع Java البسيطة هنا
2.2 خادم خاص
الخادم الخاص هو مستودع خاص عن بُعد. إنها خدمة مستودعات تم إعدادها في الشبكة المحلية. تمثل الخوادم الخاصة مستودعات عن بعد على WAN لمستخدمي Maven في الشبكة المحلية. عندما يحتاج Maven إلى تنزيل المكونات ، فإنه يطلب من الخادم الخاص. إذا لم يكن المكون موجودًا على الخادم الخاص ، فسيتم تنزيله من مستودع خارجي عن بُعد ، وقم بتخزينه على الخادم الخاص ، ثم تقديم خدمات لطلب تنزيل Maven. يمكننا أيضًا تحميل بعض المكونات التي لا يمكن تنزيلها من المستودعات الخارجية إلى الخوادم الخاصة.
ميزات خادم Maven الخاص:
1. احفظ عرض النطاق الترددي للشبكة الخارجية: تقليل استهلاك عرض النطاق الترددي الخارجي الناتج عن الطلبات المتكررة
2. تسريع مكون Maven: إذا تم تكوين المشروع مع العديد من المستودعات الخارجية الخارجية ، فسيتم تقليل سرعة البناء إلى حد كبير.
3. نشر مكونات الطرف الثالث: عندما لا يمكن الحصول على بعض المكونات من المستودعات الخارجية ، يمكننا نشر هذه المكونات على المستودعات الداخلية (الخوادم الخاصة) لاستخدامها من قبل مشاريع Maven الداخلية.
4. تحسين الاستقرار وتعزيز التحكم: عندما يكون الإنترنت غير مستقر ، سيصبح بناء Maven غير مستقر أيضًا. توفر بعض برامج الخادم الخاصة أيضًا وظائف أخرى.
5. تقليل تحميل المستودع المركزي: عدد طلبات المستودعات المركزية في Maven ضخمة ، كما أن تكوين الخوادم الخاصة يمكن أن يقلل بشكل كبير من ضغط المستودع المركزي.
خادم Maven الخاص الحالي Maven:
1. Apache's Archiva
2. Jfrog's artictory
3. سوناتايب رابص
3. تكوين المستودع البعيد
سيؤدي تكوين المستودع عن بُعد إلى تقديم عناصر تكوين جديدة: <spositories> <ropository>
بموجب عنصر <spositories> ، يمكنك استخدام عنصر الطفل <stropository> لإعلان مستودعات واحدة أو أكثر.
مثال:
<Restository> <Id> jboss </quy> <name> jboss مستودع </name> <Url> http://repository.jboss.com/maven2/ </url> <erease> <uptudayPolicy> يوميًا </updatePolicy> <! <checksumpolicy> تحذير </checksumpolicy> <!-فشل ، تجاهل-> </reease> <splishots> <تمكين> خطأ </enabled> </snapshots> <rayout> الافتراضي </layout> </ropository> </ropository> </sropository>
العنصر <uptudePolicy>: يمثل تردد التحديث ، والقيم هي: أبدًا ، دائمًا ، الفاصل الزمني ، يوميًا ، هي القيم الافتراضية
<Checksumpolicy> العنصر: يمثل سياسة Maven للتحقق من الملفات والتحقق منها. تحذير هو القيمة الافتراضية لأسباب أمنية. في بعض الأحيان نحتاج إلى مصادقة وصول المستودع البعيد. بشكل عام ، تم تكوين معلومات المصادقة في الإعدادات. xml:
<Servers> <sroder> <id> مع معرف المستودع في POM </id> <suRname> اسم المستخدم </username> <portord>
ملاحظة: يجب أن يكون المعرف هنا متسقًا مع معرف عنصر المستودع الذي يحتاج إلى المصادقة في POM.
كيفية نشر مشاريع تم إنشاؤها للمستودعات البعيدة
لإكمال هذا العمل ، تحتاج أيضًا إلى تكوينه في POM. هنا عنصر جديد: <DistributionManage>
إدارة التوزيع يحتوي على عنصرين للأطفال: مستودع و SnapshotRepository. يمثل السابق مستودعًا لنشر مكون الإصدار ، ويمثل الأخير مستودع إصدار لقطة.
يحتاج كلا العنصرين إلى تكوين المعرف (المعرف الفريد للمستودع البعيد) ، الاسم ، عنوان URL (يمثل عنوان المستودع)
يتطلب نشر المكونات في المستودعات البعيدة المصادقة. التكوين هو نفسه على النحو الوارد أعلاه
تشغيل بعد التكوين صحيح: MVN Clean Deploy
انظر إلى اللقطات بشكل صحيح
من قبل ، عند تكوين POM ، كنا حذرين للغاية بشأن تكوين اللقطات ، أو نادراً ما نستخدم إصدار اللقطة. والسبب هو أنه لا يزال غير مستقر للغاية ويسهل للغاية التسبب في أخطاء غير معروفة لنظامنا ، مما يجعل من الصعب علينا العثور عليها. في الواقع ، فإن إصدار اللقطة ليس عديم الفائدة. الغرض الأكبر من اللقطة هو استخدامه في عملية التطوير ، خاصةً عندما تكون هناك تبعيات للوحدة. على سبيل المثال ، يتم تطوير A و B في وقت واحد. A يعتمد على B. أثناء عملية التطوير ، يتم تنمية A و B باستمرار ، وتعديل ملفات POM باستمرار ومشاريع البناء. في هذا الوقت ، يصبح مزامنة الإصدار مشكلة كبيرة. يمكن تحقيق ذلك باستخدام لقطات.
في الواقع ، أثناء إصدار إصدار اللقطة ، ستعمل Maven تلقائيًا على المكون مع الطابع الزمني الحالي. مع هذا الطابع الزمني ، يمكننا العثور على أحدث إصدار لقطات في أي وقت ، والذي سيحل مشكلة التطوير التعاوني المذكورة للتو.
أما بالنسبة لكيفية فحص تحديث B ، فقد قلت للتو عند الحديث عن التكوين أن هناك عنصرًا في تكوين اللقطة يمكنه التحكم في تواتر التحقق من التحديثات -------- updatePolicy
يمكننا أيضًا استخدام سطر الأوامر لإضافة معلمات لإجبار Maven على التحقق من التحديثات: mvn clean install-U
كيف بالضبط مكونات Maven Parse من المستودع؟ ---- آلية مافن لتحليل التبعيات من المستودع
1. عندما يكون نطاق التبعية نظامًا ، يقوم Maven بحل المكون مباشرة من نظام الملفات المحلي.
2. بعد حساب مسار المستودع بناءً على إحداثيات التبعية ، حاول العثور على مكونات مباشرة من المستودع المحلي. إذا تم العثور على المكون المقابل ، فستكون الدقة ناجحة.
3. في الحالة التي لا يوجد فيها مكون مقابل في المستودع المحلي ، إذا كان الإصدار التابع هو مكون إصدار الإصدار المعروض ، ويتكرر من خلال جميع المستودعات البعيدة وتنزيله بعد الاكتشاف.
4. إذا تم إصدار الإصدار التابع أو الأحدث ، فسيتم قراءة البيانات الوصفية لجميع المستودعات البعيدة بناءً على سياسة التحديث ، ودمج البيانات الوصفية المقابلة للمستودع المحلي ، وحساب القيمة الحقيقية للإصدار أو الأحدث ، ثم تحقق من المستودع المحلي بناءً على هذه القيمة الحقيقية.
5. إذا كانت النسخة التابعة هي لقطة ، فسيتم قراءة بيانات البيانات الوصفية لجميع المستودعات عن بُعد بناءً على سياسة التحديث ، ودمجها مع البيانات الوصفية المقابلة للمستودع المحلي ، وحصل على قيمة أحدث إصدار لقطة ، ثم تحقق من المستودع المحلي بناءً على القيمة أو تنزيله من المتسابق عن بُعد.
6. إذا كان الإصدار الأثري الأخير هو لقطة من تنسيق الطوابع الزمنية ، فقم بنسخ الملف بتنسيق الطابع الزمني الخاص به إلى تنسيق غير محدد واستخدام قطعة أثرية في هذا التنسيق غير المظلي.
ملاحظة: تأكد من تذكر <relect> <terupert> & <snapshot> <تمكين> ، وينطبق الشيء نفسه على اللقطات
لا ينصح بالأحدث والإصدار عند إعلان POM. أحدث وإصدار في تكوين المكونات الإضافية لم يعد مدعومًا في Maven3. إذا لم يتم تعيين إصدار المكون الإضافي ، فإن الإصدار النهائي هو نفسه الإصدار.
سوف Maven تحليل فقط أحدث إصدار.
ما سبق هو كل محتوى هذه المقالة. آمل أن يكون ذلك مفيدًا لتعلم الجميع وآمل أن يدعم الجميع wulin.com أكثر.