artifactory - عندما يقول maven "لن يتم إعادة تثبيت الدقة حتى انقضاء الفاصل الزمني للتحديث لـ MyRepo" ، حيث يتم تحديد ذلك الفاصل الزمني؟




(13)

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

سوف أتلقى رسالة خطأ من عميل maven تقول أنه لا يمكن العثور على قطعة أثرية:

فشل في العثور على org.jfrog.maven.annomojo: maven-plugin-anno: jar: 1.4.0 في http://myrepo:80/artifactory/repo تم تخزينها مؤقتًا في المستودع المحلي ، لن يتم إعادة ضبط الدقة حتى فترة التحديث لقد انقضت MyRepo أو أجبرت التحديثات -> [مساعدة 1]

الآن ، أفهم ما يعنيه هذا ، ويمكنني ببساطة إعادة تشغيل الأمر مع -U ، وعادة ما تعمل الأشياء بشكل جيد من هناك .

ومع ذلك ، أجد رسالة الخطأ هذه غير مبسطة للغاية وأنا أحاول تجنيب زملائي بعض الصداع.

أحاول معرفة ما إذا كان هناك بعض الأماكن التي يمكنني تعديل إعداد update interval هذا.

  1. هل update interval المذكور في رسالة الخطأ هذه هو إعداد من جانب العميل أو من جانب الخادم؟
  2. إذا كان العميل ، كيف يمكنني تكوينه؟
  3. إذا كان الخادم من جانب الخادم ، هل يعرف أي شخص كيف / إذا كان Nexus / Artifactory يعرض هذه الإعدادات؟

Answers

إذا كنت تستخدم Eclipse ، فانتقل إلى Windows -> Preferences -> Maven وألغ تحديد مربع الاختيار "عدم تحديث التبعيات تلقائيًا من المستودعات البعيدة".

هذا يعمل مع مافن 3 كذلك.


يمكن أن يكون هذا الخطأ مضللًا في بعض الأحيان. 2 أشياء قد ترغب في التحقق منها:

  1. هل هناك JAR الفعلي للتبعية في الريبو؟ تحتوي رسالة الخطأ الخاصة بك على عنوان URL لمكان البحث ، لذلك انتقل إلى هناك ، ثم استعرض إلى المجلد الذي يطابق التبعية الخاصة بك. هل هناك جرة؟ إن لم يكن ، تحتاج إلى تغيير التبعية الخاصة بك. (على سبيل المثال ، قد تكون تشير إلى تبعية أصل أعلى مستوى ، عندما يجب أن تقوم بالإشارة إلى مشروع فرعي)

  2. إذا كانت الجرة موجودة على الريبو عن بعد ، فما عليك سوى حذف نسختك المحلية. سيكون في الدليل الرئيسي (ما لم يتم تكوينه بشكل مختلف) تحت .m2 / مستودع (ls -a لإظهار مخفي إذا كان على Linux).


وفقًا للإعدادات reference :

updatePolicy: يحدد هذا العنصر مدى تكرار محاولة حدوث التحديثات. سوف يقارن Maven الطابع الزمني المحلي لـ POM (المخزن في ملف maven-metadata للمستودع) إلى جهاز التحكم عن بعد. الاختيارات هي: دائما ، يوميا (افتراضي) ، الفاصل الزمني: X (حيث X هو عدد صحيح في دقائق) أو أبدا.

مثال:

<profiles>
    <profile>
      ...
      <repositories>
        <repository>
          <id>myRepo</id>
          <name>My Repository</name>
          <releases>
            <enabled>false</enabled>
            <updatePolicy>always</updatePolicy>
            <checksumPolicy>warn</checksumPolicy>
          </releases>
         </repository>
      </repositories>
      ...
    </profile>
  </profiles>
  ...
</settings>

إذا كنت تستخدم Nexus كوحدة ريبوك للوكيل ، فسيكون الإعداد "Not Found Cache TTL" مع القيمة الافتراضية 1440 دقيقة (أو 24 ساعة). قد يساعد تخفيض هذه القيمة على (المستودعات> التكوين> إعدادات انتهاء الصلاحية).

انظر documentation لمزيد من المعلومات.


كيف حصلت على هذه المشكلة ،

عندما قمت بالتغيير من Eclipse Juno إلى Luna ، وتحقق من مشروعاتي maven من SVN repo ، حصلت على نفس المشكلات أثناء إنشاء التطبيقات.

ما جربت؟ حاولت تنظيف مستودع محلي ومن ثم تحديث جميع الإصدارات مرة أخرى باستخدام خيار -U. لكن مشكلتي استمرت.

ثم ذهبت إلى Window -> Preferences -> Maven -> User Settings -> ثم قمت بالنقر فوق زر Reindex تحت مستودع محلي وانتظر ريندكس ليحدث.

هذا كل شيء ، يتم حل المشكلة.


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

الجانب نيكزس (جانب الخادم ريبو) ، يتم حل هذه المشكلة تكوين مهمة مجدولة. جانب العميل ، يتم ذلك باستخدام -U ، كما -U بالفعل.


يجب حذف جميع ملفات "_maven.repositories" من المستودع الخاص بك.


نوعا ما ذو صلة .. كنت أحصل عليه

"[خطأ] فشل في تنفيذ الهدف في مشروع اختبار المشروع: تعذر حل الاعتمادات لمشروع myjarname: jar: 1.0-0: الفشل في العثور على myjarname-core: package: 1.0-0 في http://repo1.maven.org/maven2 تم تخزينها مؤقتًا في المستودع المحلي ، لن يتم إعادة الحل إلى أن ينقضي الفاصل الزمني للتحديث المركزي أو يتم فرض التحديثات -> [مساعدة 1] "

سبب هذا الخطأ هو استخدام Maven 3 قصد بدلاً من Maven 2 . فقط أحسب أنه قد ينقذ شخص ما بعض الوقت ، لأن بحثي الأول في google قادني إلى هذه الصفحة.


كان لدي مشكلة ذات صلة ، ولكن إجابة Raghuram ساعدت. (ليس لدي سمعة كافية حتى الآن للتصويت على إجابته). أنا أستخدم Maven مع NetBeans ، وكنت نحصل على نفس "... تم تخزينها مؤقتًا في المستودع المحلي ، لن يتم حلها إلى أن يتم انقضاء الفاصل الزمني للتحديث للعلاقة أو يتم فرض التحديثات -> [Help 1]" error .

لإصلاح هذا ، أضفت <updatePolicy>always</updatePolicy> إلى ملف الإعدادات (C: \ Program Files \ NetBeans 7.0 \ java \ maven \ conf \ settings.xml)

<profile>
  <id>nexus</id>
  <!--Enable snapshots for the built in central repo to direct -->
  <!--all requests to nexus via the mirror -->
  <repositories>
    <repository>
      <id>central</id>
      <url>http://central</url>
      <releases><enabled>true</enabled><updatePolicy>always</updatePolicy></releases>
      <snapshots><enabled>true</enabled><updatePolicy>always</updatePolicy></snapshots>
    </repository>
  </repositories>
 <pluginRepositories>
    <pluginRepository>
      <id>central</id>
      <url>http://central</url>
      <releases><enabled>true</enabled><updatePolicy>always</updatePolicy></releases>
      <snapshots><enabled>true</enabled><updatePolicy>always</updatePolicy></snapshots>
    </pluginRepository>
  </pluginRepositories>
</profile>

في Eclipse:

  • انقر بالزر الايمن على المشروع -> تشغيل كما -> بناء ميفن -> تحديد الهدف باسم "تثبيت نظيف" - >> سيتم تحميل القطع الفنية المطلوبة إلى مستودع محلي.
  • - >> عندما بناء النجاح! -> انقر بزر الماوس الأيمن فوق Project-> Maven -> Project Update (تحقق من clean).

هذه المشكلة أربكتني ليوم واحد أنا حلها عن طريق التحقق من موقع مستودع محلي. لقد استخدمت IntelliJ كـ IDE الخاص بي ووجدت المخزون المحلي الافتراضي من maven هو "C: /Users/.m2/repository". لقد غيرت ذلك إلى المسار المخصص الخاص بي وتم حل المشكلة.


تحقق من إعداد النسخة المتطابقة في settings.xml. ربما يكون موقع المرآة بعيدًا عن نطاقك ولا يمكن الوصول إليه. حاول اختيار المرايا بالقرب من موقع مضيفك. حاول استخدام المرايا التالية

 <mirror>
        <id>repo.exist.com</id>
        <url>http://repo.exist.com/maven2</url>
    </mirror>
    <mirror>
        <id>ibiblio.org</id>
        <url>http://mirrors.ibiblio.org/pub/mirrors/maven2</url>
    </mirror>
    <mirror>
        <id>ibiblio.net</id>
        <url>http://www.ibiblio.net/pub/packages/maven2</url>
    </mirror>
    <!--mirror>
        <id>mirror.netcologne.de</id>
        <url>http://mirror.netcologne.de/maven2</url> 
    </mirror -->
    <mirror>
        <id>uk.maven.org</id>
        <url>http://uk.maven.org/maven2</url>
    </mirror>

نظرًا لأن الخيارات المتاحة هنا لم تنجح معي ، فأنا أشاركك في كيفية حلها:

أنا مشروعي ، هناك مشروع الأم (مع pom.xml الخاصة به) التي لديها العديد من وحدات الأطفال ، واحد منها (A) لديه تبعية لطفل آخر (B). عندما حاولت mvn package في A ، لم تنجح لأنه لا يمكن حل B.

تنفيذ تنفيذ mvn install في الدليل الأصل قام بهذه المهمة. بعد ذلك ، يمكن أن أفعل mvn package داخل A وعندها فقط يمكن أن تجد B.





maven artifactory