في Maven 2، هل من الممكن تحديد مرآة لكل شيء، مع السماح بتجاوز الفشل لتوجيه المستودعات؟

StackOverflow https://stackoverflow.com/questions/2471031

  •  20-09-2019
  •  | 
  •  

سؤال

أفهم هذا الجزء من جاذبية إعداد مرآة Maven، مثل ما يلي:

<mirror>
  <id>nexus</id>
  <name>Maven Repository</name>
  <mirrorOf>*</mirrorOf>
  <url>http://server:8081/nexus/content/groups/public</url>
</mirror>

...هل هذا هو توثيق تنص على:

يمكنك إجبار Maven على استخدام مستودع واحد من خلال جعله يعكس جميع طلبات المستودع.

ومع ذلك، هل هذا أيضًا مؤشر على أنه من خلال وجود * مرآة إعداد كل محطة عمل يجب تضطر للذهاب من خلال المرآة؟

أسأل ذلك لأنني أرغب في تجاوز الفشل لكل محطة عمل والاتصال مباشرة بأي مستودعات عامة تعرفها في حالة عدم تمكن Nexus من حل تبعية أو مكون إضافي.(في عالم مثالي، يتمتع كل مطور بإمكانية الوصول اللازمة لإضافة مستودعات وكيل إضافية حسب الحاجة.ومع ذلك، في بعض الأحيان لا يكون هذا الوصول متاحًا؛في بعض الأحيان يتعطل خادم Nexus؛في بعض الأحيان يعاني من خطأ في كومة Java.)

هل هذا التكوين "المرآة ولكن المضي قدمًا والاتصال مباشرة بمستودعات إعادة الشراء العامة" ممكن في Maven 2؟هل سيكون في Maven 3؟

هل كانت مفيدة؟

المحلول

هذا غير ممكن في Maven 2.قد يكون ذلك ممكنًا في المستقبل في Maven 3.لقد فكرنا أيضًا في إضافة هذا الاحتمال في Nexus إلى عناصر الوكيل ديناميكيًا.خلاصة القول هي أن معظم المؤسسات تريد التحكم في مستودعات الوكيل التي يستخدمها المطورون، وبالتالي أصبحت هذه الميزة شائعة جدًا في مدير الريبو.

لنفس السبب، فإن وجود أجهزة المطورين تتراجع مباشرة من الوصول إلى مدير الريبو إلى الريبو مباشرة ليس أمرًا مرغوبًا فيه.ثم ينتهي بك الأمر إلى فقدان جميع مزايا التخزين المؤقت للوكيل والمشاركة والتصفية وما إلى ذلك التي تحصل عليها.

نصائح أخرى

لا، لا يوجد وضع تجاوز الفشل.يمكنك استبعاد بعض المستودعات من الذهاب إلى المرآة مطلقًا <mirrorOf>*,!repository</mirrorOf>, ، أو يمكنك الحصول على اثنين settings.xml الملفات التي سوف تتصرف بشكل مختلف والتبديل باستخدام --settings إذا لزم الأمر.

إحدى الإجابات (ضمنية في سؤالي) هي أن هذا غير ممكن حسب التصميم.التعليق في نهاية هذه التذكرة بقلم جيسون فان زيل يشير إلى ذلك

لم يتم فحص المرآة الحقيقية عن قصد.إن الطريقة التي يعمل بها مديرو المستودعات هذه الأيام سوف تتعطل بشدة إذا بدأنا في القيام بذلك.

هذا التكوين ممكن أيضا.إنه يعمل بشكل رائع، ولكن هناك موقف صعب واحد، إذا كان المشروع كبيرًا من الناحية الهرمية ولم يكن لدى جميع الأطفال نفس الوالد، فسيتعين عليك نسخ هذا القسم حتى إلى أعمدةهم.هذا يعني أنه في أي مكان آخر غير المشروع الذي يعلن عن هذا المركزي المزيف، وهو الريبو الافتراضي الذي يجب النظر إليه، سيذهب طلبك إلى المركزي المخضرم المناسب أو إلى المستودعات المعلنة الأخرى في بوم المشروع.يمسك:أنت تستخدم البرنامج المساعد X - وربما لا تكون على علم به في الواقع - ويعتمد البرنامج المساعد X على القطعة الأثرية Y، والتي تم الإعلان عنها في الريبو الخاص بها ....>>> لا يوجد سيطرة على تفويض جميع طلبات التبعيات إلى nexus

البديل الآخر هو الحصول على settings.xml إضافية للمشاريع و"تزويدها" بـ $mvn -s settings.xml

البديل الثالث هو وجود الإعدادات العامة.xml على النحو التالي، وتنشيط -P nexus فقط عند الحاجة، لأنه بدون مستودع مركزي مزيف فإنه يعمل بشكل مدهش.

<settings>
    <mirrors>
        <mirror>
            <id>nexus</id>
            <name>nexus</name>
            <url>http://localhost:8082/nexus-webapp-1.6.0/content/groups/public</url>
            <mirrorOf>*</mirrorOf>
        </mirror>
    </mirrors>

    <profiles>
        <profile>
            <id>nexus</id>

                <repositories>
                <repository>
                    <id>central</id>
                    <url>http://central</url>
                    <releases>
                        <enabled>false</enabled>
                    </releases>
                    <snapshots>
                        <enabled>false</enabled>
                    </snapshots>
                </repository>
            </repositories>
            <pluginRepositories>
                <pluginRepository>
                    <id>central</id>
                    <url>http://central</url>
                    <releases>
                        <enabled>false</enabled>
                    </releases>
                    <snapshots>
                        <enabled>false</enabled>
                    </snapshots>
                </pluginRepository>
            </pluginRepositories>  
        </profile>
    </profiles>
    <activeProfiles>

    </activeProfiles>
</settings>

افتح الصورة في علامة تبويب/نافذة أخرى.enter image description here

مرخصة بموجب: CC-BY-SA مع الإسناد
لا تنتمي إلى StackOverflow
scroll top