pom.xml و settings.xml
يمكن القول أن pom.xml و setting.xml هما أهم ملفات التكوين في Maven ، والتي تحدد الوظائف الأساسية لـ Maven. على الرغم من أن المقالات السابقة ذكرت المحتويات في pom.xml والإعدادات. الغرض من هذه المقالة هو دراسة هذين ملفات التكوين المهمة بالتفصيل. يمكن أن يؤدي هذان الملفان للتكوين إلى الكثير من مواضيع Maven.
إحداثيات مافن
أولاً ، دعنا نتحدث عن سبب حاجةنا إلى استخدام إحداثيات Maven.
يحتوي عالم Maven على عدد كبير جدًا من المكونات ، أي بعض الجرة والحرب والملفات الأخرى التي يتم استخدامها عادةً. قبل أن يقدم Maven مفهوم الإحداثيات لهذه المكونات ، لا يمكننا استخدام أي طريقة لتحديد كل هذه المكونات بشكل فريد. لذلك ، إذا كنت بحاجة إلى استخدام تبعيات الربيع ، فانتقل إلى موقع الربيع الرسمي للبحث ؛ إذا كنت بحاجة إلى استخدام تبعيات Log4J ، فانتقل إلى موقع Apache الرسمي للبحث. بسبب الأنماط المختلفة لكل موقع ويب ، يتم قضاء الكثير من الوقت في البحث وتصفح صفحات الويب. بدون المعايير والقواعد الموحدة ، لا يمكن أن يكون العمل آليًا ، ويجب ترك العمل المتكرر للآلات.
يحدد Maven مجموعة من القواعد: يمكن تحديد أي مكون في العالم بشكل فريد من خلال إحداثيات Maven. تشمل عناصر إحداثيات Maven GroupID و Artifactid و Prose و Backing و Classifier. الآن طالما أننا نقدم إحداثيات العنصر الصحيحة ، يمكن لـ Maven العثور على المكون المقابل. أما بالنسبة للتنزيل ، فإن Maven نفسه لديه عنوان مدمج للمستودع المركزي "http://repo1.maven.org/maven2". يحتوي المستودع المركزي على معظم مكونات مشروع مفتوح المصدر الشهير في العالم. سوف Mavne تنزيلها عند الحاجة. بالطبع ، يمكنك أيضًا تكوين عنوان المستودع المركزي الخاص بك وتنزيل المكونات في المستودع المركزي الخاص بك.
على سبيل المثال ، سياق الربيع:
<Rependency> <roupeD> org.springframework </rougeid> <StifactId> spring-context </artifactid> <sored> 4.2.6.release </version> </dependency
ألق نظرة على عناصر المرؤوس:
هذا هو تقريبا مفهوم الإحداثيات مافن. يعد فهم إحداثيات Maven خطوة مهمة جدًا في فهم Maven.
التبعية متعدية
ما هو التبعية المتعدية؟ خذ الربيع كمثال. عند استخدام الربيع ، ستعتمد على مكتبات فئة المصدر المفتوح الأخرى. هناك طريقتان للقيام بذلك:
1. قم بتنزيل حزمة .zip كبيرة تحتوي على جميع الجرار الربيع ، ولكن القيام بذلك في كثير من الأحيان يقدم العديد من التبعيات غير الضرورية
2. فقط قم بتنزيل حزم .zip ذات الصلة بنابض ، لا تشمل التبعيات. عند استخدامها ، أضف تبعيات أخرى مطلوبة وفقًا لمعلومات الخطأ.
من الواضح أن كلا النهجين مزعجة للغاية ، وآلية التبعية المتعدية في مافن تحل هذه المشكلة بشكل جيد. افتح pom.xml من spring-core-4.1.0.release ، وأعترض جزءًا أساسيًا:
<Rependencies> <Rependency> <roupiD> commons-codec </rougiD> <StifactId> المشاع-codec </shintifactid> <select> 1.9 </version> <scope> ترجمة </scope> <اختياري> true </sperian <soph> 1.1.3 </version> <scope> ترجمة </scope> </sependency> ... </تبعية>
على سبيل المثال ، يعتمد المشروع A على نورس الربيع ، ويعتمد النور الربيعي على العموم-كودك والعموم ، وبالتالي فإن العموم-كودك وتراجع العموم هي تبعيات متعدية للمشروع أ. مع آلية التبعية المتعدية ، عند استخدام النور الخبيث ، لا يتعين عليك النظر في ما يعتمد عليه ، ولا داعي للقلق بشأن إدخال التبعيات غير اللازمة. ستقوم Maven بتحليل كل POM التبعية المباشرة وإدخال التبعيات غير المباشرة اللازمة في المشروع الحالي في شكل تبعيات متعدية.
مع آلية التبعية المتعدية ، من ناحية ، فإنه يبسط ويسهل إعلان التبعية. من ناحية أخرى ، في معظم الحالات ، نحتاج فقط إلى الاهتمام بماهية التبعيات المباشرة للمشروع ولا تحتاج إلى النظر في التبعيات المتعدية التي ستقدمها هذه التبعيات المباشرة. ومع ذلك ، في بعض الأحيان سيكون لدى التبعيات المتعدية بعض المشاكل. في هذا الوقت ، نحتاج إلى مسح المسار الذي تم من خلاله إدخال التبعية المتعدية. وهذا ما يسمى الوساطة التبعية. هناك مبدأان رئيسيان لوساطة التبعية:
1. a-> b-> c-> x (1.0) ، a-> d-> x (2.0) ، في هذا الوقت ، هناك نسختان من x على مساري التبعية. في هذا الوقت ، يفضل المسار الأقرب ، لذلك سيتم تحليل X (2.0).
2. أطوال التبعية لـ A-> B-> y (1.0) ، a-> c-> y (2.0) ، y (1.0) و y (2.0) هي نفسها. بدءًا من Maven2.0.9 ، يتبع البيان الأول الأولوية ، أي أن التبعية بأعلى ترتيب مفضل.
استبعاد التبعيات
ستقدم التبعيات المتعدية ضمنيًا الكثير من التبعيات للمشروع ، مما يبسط بشكل كبير إدارة تبعيات المشروع ، ولكن في بعض الأحيان يمكن أن تسبب هذه الميزة أيضًا مشاكل. على سبيل المثال ، هناك موقف:
يعتمد المشروع الحالي على A. A يعتمد على إصدار لقطة من مكتبة فئة أخرى لسبب ما. ثم ستصبح هذه اللقطة تبعية متعدية للمشروع الحالي. ثانياً ، سيؤثر عدم استقرار اللقطة بشكل مباشر على المشروع الحالي. في هذا الوقت ، يجب استبعاد اللقطة وإصدار إصدار رسمي من مكتبة الفصل في المشروع الحالي.
من السهل جدًا استبعاد التبعيات ، دعنا نلقي نظرة على طريقة الكتابة:
<Rependency> <roupEd> com.alibaba.rocketmq </rougiD> <intifactid> RocketMq-Client </shintifactid> <sophy> 3.2.7 </sply> <visplusions> <Sective> <visplusion> apache-lang </groupid>
قدمت هنا تبعية RocketMQ ، لكنني لا أريد الاعتماد على Apache-Lang في RocketMQ ، لكنني أرغب في تقديم تبعيات بنفسي ، لذلك استبعدت Apache-Lang.
تجدر الإشارة هنا إلى أنه عند الإعلان عن الاستبعاد ، هناك حاجة فقط إلى GroupID و Artifactid ، وليس هناك حاجة إلى عناصر الإصدار. وذلك لأن فقط GroupID و Artifactid مطلوبة لتحديد موقع التبعية بشكل فريد في الرسم البياني التبعية. وبعبارة أخرى ، في التبعيات المتوسطة في Maven ، من المستحيل أن يكون لديك اثنين من التبعيات مع نفس Groupid و Artifactid ، ولكن الإصدارات المختلفة.
الإعدادات
الإعدادات. xml هو التكوين الأساسي لـ Maven. هناك العديد من العناصر ، لذلك دعونا نلقي نظرة عليها واحدة تلو الأخرى.
1. الوكيل
الوكيل يعني وكيل Maven. لنلقي نظرة على طريقة الكتابة:
<Perxies> <Verxy> <Id> اختياري </id> <techanced> True </Active> <brotocol> http </roprocol> <username> proxyuser </suname> <portord> proxypass </suredpoord> <soval> proxy.net <nsproxyhosts> local.net | some.host.com </nonproxyhosts> </verxy> </perxies>
هناك حاجة إلى الوكيل لأنه في كثير من الأحيان تطلب منك شركتك الوصول إلى الإنترنت باستخدام وكيل معتمد من الأمان بناءً على اعتبارات الأمان. في هذه الحالة ، تحتاج إلى تكوين وكيل HTTP لـ Maven للسماح له بالوصول إلى المستودع الخارجي عادة لتنزيل الموارد المطلوبة. يمكن تكوين عناصر الوكيل المتعددة تحت الوكلاء. إذا تم الإعلان عن عناصر وكيل متعددة ، فإن الوكيل الأول الذي تم تنشيطه سيصبح ساري المفعول افتراضيًا. النشط صحيح لتفعيل الوكيل ، يمثل البروتوكول بروتوكول الوكيل المستخدم ، بالطبع ، الشيء الأكثر أهمية هو تحديد اسم المضيف الصحيح (المضيف) والمنفذ (المنفذ). إذا كان خادم الوكيل يحتاج إلى مصادقة ، فقم بتكوين اسم المستخدم وكلمة المرور. يشير عنصر Non -Proxyhost إلى أسماء المضيف لا تتطلب وكيلًا. يمكنك استخدام "|" لفصل أسماء المضيف المتعددة ، وكذلك دعم Wildcard "*".
2. مستودع
يمثل المستودع المستودع المركزي لـ Maven ، لأنه على الرغم من أن المكونات الموجودة في المستودع البعيد الافتراضي كبير جدًا ، فستكون هناك دائمًا أوقات لا تلبي احتياجاتنا ، ثم سيتم استخدام المستودعات المركزية الأخرى. لنلقي نظرة على طريقة الكتابة:
<Restository> <id> public </firos> <ame> nexus private المحلي </name> <Url> http://192.168.1.6:8081/nexus/content/groups/public </url> <reedease>
يمكن إعلان مستودع متعدد. يجب أن يكون المعرف فريدًا. إيلاء اهتمام خاص أن المعرف المستخدم من قبل المستودع المركزي الذي يأتي مع Maven هو مركزي. إذا استخدمت إعلانات المستودع الأخرى أيضًا هذا المعرف ، فسيتم كتابة تكوين المستودع المركزي. الإصدارات واللقطات أكثر أهمية. السابق يعني فتح دعم إصدار الإصدار للمستودع ، والآخر يعني إغلاق دعم إصدار Snapshot لتنزيل المستودع. وبهذه الطريقة ، ستذهب Maven إلى المستودع لتنزيل إصدار الإصدار من المستودع دون تنزيل إصدار Snapshot من المستودع.
3. الخادم
يمكن الوصول إلى معظم المستودعات البعيدة دون مصادقة ، ولكن في بعض الأحيان يتم النظر فيها في عوامل الأمان وتحتاج إلى توفير معلومات المصادقة للوصول إلى بعض المستودعات البعيدة. بالنسبة لاعتبارات الأمان ، يتم وضع معلومات المصادقة بشكل عام فقط في الإعدادات. xml ، والخادم هو عنصر المصادقة. ألق نظرة على التكوين:
<sroper> <id> nexus-releases </id> <username> النشر </username> <sworder> النشر </password> </server>
المفتاح هنا هو المعرف. يجب أن يكون هذا المعرف هو نفس معرف عنصر المستودع الذي يحتاج إلى المصادقة. بمعنى آخر ، يربط المعرف الرسمي معلومات المصادقة وتكوين المستودع.
4. المرآة
إذا تمكنت Warehouse X من توفير جميع المحتوى المخزّن في Warehouse Y ، فيمكن اعتبار المستودع X مرآة للمستودع Y. وبعبارة أخرى ، يمكن الحصول على أي مكون يمكن الحصول عليه من Y من X. على سبيل المثال ، "http://maven.net.cn/Content "http://repo1.maven.org/maven2/" في الصين. نظرًا لعوامل الموقع الجغرافي ، غالبًا ما تكون المرآة قادرة على تقديم خدمات أسرع من المستودع المركزي ، وهذا هو السبب في استخدام المرآة.
ألق نظرة على تكوين المرآة:
<lirror> <Id> nexus </quar> <name> مستودع Nexus الداخلي </name> <Url> http://192.168.1.6:8081/nexus/content/groups/public </url> <warrorof>*</mirrorof> </mirror>
في هذا المثال ، يكون Mirrorf *، مما يشير إلى أن التكوين هو مرآة لجميع المستودعات المركزية ، وسيتم نقل أي طلبات للمستودع المركزي إلى المرآة. لا يختلف معرف العناصر الثلاثة والاسم وعنوان URL عن تكوين المستودع العام ، الذي يمثل المعرف الفريد واسم وعنوان مستودع المرآة. وبالمثل ، إذا كانت الصورة تتطلب المصادقة ، فيمكن أيضًا تكوين مصادقة المستودع بناءً على المعرف.
شكرا لك على القراءة ، آمل أن تساعدك. شكرا لك على دعمك لهذا الموقع!