826 Stimmen

Wenn maven sagt "Auflösung wird nicht erneut versucht, bis das Aktualisierungsintervall von MyRepo abgelaufen ist", wo ist dieses Intervall angegeben?

Mit Maven stoße ich gelegentlich auf ein Artefakt, das von einem Drittanbieter-Repository stammt, das ich noch nicht gebaut oder in mein Repository aufgenommen habe.

Ich erhalte eine Fehlermeldung vom Maven-Client, dass ein Artefakt nicht gefunden werden kann:

org.jfrog.maven.annomojo:maven-plugin-anno:jar:1.4.0 wurde nicht gefunden in http://myrepo:80/artifactory/repo wurde im lokalen Cache Repository zwischengespeichert wurde, wird die Auflösung nicht erneut versucht, bis das Aktualisierungs Intervall von MyRepo verstrichen ist oder Aktualisierungen erzwungen werden -> [Hilfe 1]

Jetzt, I verstehen, was das bedeutet, und kann meinen Befehl einfach erneut ausführen mit -U und von da an funktioniert es normalerweise gut. .

Ich finde diese Fehlermeldung jedoch äußerst unintuitiv und versuche, meinen Mitarbeitern einige Kopfschmerzen zu ersparen.

Ich versuche herauszufinden, ob es eine Stelle gibt, an der ich das ändern kann update interval Umgebung.

  1. Ist die update interval die in dieser Fehlermeldung erwähnt wird, eine clientseitige oder eine serverseitige Einstellung?
  2. Wenn clientseitig, wie konfiguriere ich es?
  3. Wenn Server-seitig, weiß jemand, wie/ob Nexus/Artifactory diese Einstellungen offenlegen?

42 Stimmen

Ich erhielt die gleiche Fehlermeldung nach dem Hinzufügen von 1 weiteren Abhängigkeit zu meiner pom.xml. Für mich ist das eindeutig ein BUG. Ich verstehe nicht, warum das passiert! Wenn ich Abhängigkeiten zu meinem Projekt hinzufüge und mvn compile ausführe, dann sollte es einfach die Jar-Dateien herunterladen. Dieses Verhalten ist völlig unsinnig!

3 Stimmen

2 Stimmen

Ich habe erst kürzlich diese Erfahrung gemacht, und nach all den Antworten, die ich gelesen habe, ist ein weiterer zusätzlicher Schritt das Projekt erneut importieren in Eclipse (in meinem Fall). Es war zu seltsam, dass Eclipse mich ständig mit einem Plugin nervte, das nicht in meinem pom.xml .

402voto

Christian Achilli Punkte 5237

Ich habe dieses Problem gelöst, indem ich das entsprechende Verzeichnis für fehlgeschlagene Artefakt-Downloads in meinem lokalen Repository gelöscht habe. Wenn ich das nächste Mal den Maven-Befehl ausführe, wird der Artefakt-Download wieder ausgelöst. Daher würde ich sagen, dass es eine clientseitige Einstellung ist.

Auf der Nexus-Seite (Server-Repository-Seite) wird dieses Problem durch die Konfiguration einer geplanten Aufgabe gelöst. Auf der Client-Seite geschieht dies mit -U wie Sie bereits erwähnt haben.

13 Stimmen

"Ich habe dieses Problem gelöst, indem ich das entsprechende Verzeichnis für fehlgeschlagene Downloads in meinem lokalen Repository gelöscht habe." Das hat bei mir funktioniert. Ich benutze auch Netbeans.

52 Stimmen

Wenn Maven feststellt, dass das gecachte Artefakt ungültig ist, warum kann es dieses Problem nicht selbst lösen?

1 Stimmen

Was bedeutet "Konfigurieren einer geplanten Aufgabe" und "dies geschieht mit -U", können Sie bitte diese in objektive Eclipse UI Begriffe?

204voto

Sanjeev Guglani Punkte 1728

Maven holt die Jars täglich aus dem Repo, d.h. wenn beim ersten Versuch das Internet nicht funktioniert hat, wird es nicht versuchen, dieses Jar erneut zu holen, bis 24 Stunden vergangen sind.

Auflösung :

Entweder verwenden Sie

mvn -U clean install

wobei -U die Aktualisierung des Projektarchivs erzwingt

oder verwenden

<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>

in Ihrer settings.xml

0 Stimmen

Dies hat mir tatsächlich bei der systembezogenen Abhängigkeit geholfen, indem ich die NoClassDefFoundError während der Laufzeit.

0 Stimmen

Aus irgendeinem Grund funktionierte die Bereinigung von .m2 bei mir nicht, nachdem ich das updatePolicy-Tag in der Datei settings.xml hinzugefügt hatte, wurden Artefakte heruntergeladen

152voto

kds Punkte 27579

Können Sie das entsprechende Verzeichnis für fehlgeschlagene Artefakte in Ihrem lokalen Repository löschen. Sie können auch einfach die -U im Tor. Es wird die Arbeit machen. Dies funktioniert mit Maven 3. Sie müssen also nicht auf Maven 2 downgraden.

3 Stimmen

Warum sich mit der Konfiguration des Repositorys herumschlagen, wenn es so einfach sein kann?

12 Stimmen

Bitte lesen Sie die Frage sorgfältig, bevor Sie antworten. Der Auftraggeber fragt, wie man ein Zeitintervall festlegt, nicht wie man eine Aktualisierung erzwingt.

3 Stimmen

Das ist keine Antwort auf die Frage, aber das ist es, was die Leute brauchen, wenn sie auf diese Ausnahme stoßen. Denn wenn Sie an einer lokalen Lib-Entwicklung arbeiten, ist es am besten, eine solche Lib zu löschen, anstatt sich von dem Intervall verwirren zu lassen.

71voto

MrDrews Punkte 2069

Ich hatte ein ähnliches Problem, aber die Antwort von Raghuram hat mir geholfen. (Ich habe noch nicht genug Ansehen, um seine Antwort zu bewerten). Ich verwende Maven zusammen mit NetBeans und erhielt den gleichen Fehler "...wurde im lokalen Repository zwischengespeichert, die Auflösung wird nicht erneut versucht, bis das Aktualisierungsintervall von nexus abgelaufen ist oder Aktualisierungen erzwungen werden -> [Hilfe 1]".

Um dies zu beheben, habe ich <updatePolicy>always</updatePolicy> in meine Einstellungsdatei ( C:\Program ファイル \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>

10 Stimmen

In meinem Fall hat das nicht geholfen.

57voto

sfletche Punkte 42866

Sie können dieses Problem zwar mit einer sauberen Installation beheben (und dabei alle zwischengespeicherten Abhängigkeiten überschreiben), wie @Sanjeev-Gulgani vorschlägt, indem Sie mvn -U clean install

Sie können auch einfach die zwischengespeicherte Abhängigkeit, die das Problem verursacht, mit

mvn dependency:purge-local-repository -DmanualInclude="groupId:artifactId"

Siehe mvn-Dokumente für weitere Informationen.

8 Stimmen

Aber warum bricht Maven den Build ab? Warum nimmt es nicht einfach die gecachte Abhängigkeit, die in Ihrem lokalen Repository vorhanden ist? Warum müssen Sie sie löschen, damit Maven sie holt?!

0 Stimmen

Die einzige Antwort, die tatsächlich funktioniert für freigeben Versionen von Artefakten.

CodeJaeger.com

CodeJaeger ist eine Gemeinschaft für Programmierer, die täglich Hilfe erhalten..
Wir haben viele Inhalte, und Sie können auch Ihre eigenen Fragen stellen oder die Fragen anderer Leute lösen.

Powered by:

X