Mit maven stoße ich gelegentlich auf ein Artefakt, das aus einem Repo eines Drittanbieters stammt, das ich noch nicht erstellt oder in mein Repository aufgenommen habe.
Ich erhalte eine Fehlermeldung vom Maven-Client, dass ein Artefakt nicht gefunden werden kann:
Wenn org.jfrog.maven.annomojo: maven-plugin-anno: jar: 1.4.0 in nicht gefunden wurde,
http://myrepo:80/artifactory/repo
wurde es im lokalen Repository zwischengespeichert. Die Auflösung wird erst erneut versucht, wenn das Aktualisierungsintervall von MyRepo abgelaufen ist oder Aktualisierungen erzwungen werden -> [ Hilfe 1]
Jetzt verstehe ich , was dies bedeutet, und kann meinen Befehl einfach erneut ausführen -U
, und von da an funktionieren die Dinge normalerweise einwandfrei .
Ich finde diese Fehlermeldung jedoch äußerst unintuitiv und versuche, meinen Mitarbeitern einige Kopfschmerzen zu ersparen.
Ich versuche herauszufinden, ob es einen Ort gibt, an dem ich diese update interval
Einstellung ändern kann .
- Handelt es sich bei der
update interval
in dieser Fehlermeldung genannten Einstellung um eine clientseitige oder serverseitige Einstellung? - Wie konfiguriere ich es auf der Clientseite?
- Weiß jemand auf der Serverseite, wie / ob Nexus / Artifactory diese Einstellungen verfügbar macht?
quelle
pom.xml
.Antworten:
Ich habe dieses Problem gelöst, indem ich das entsprechende Verzeichnis zum Herunterladen von Artefakten in meinem lokalen Repo gelöscht habe. Wenn ich das nächste Mal den Befehl maven ausführe, wird der Artefakt-Download erneut ausgelöst. Daher würde ich sagen, dass es sich um eine clientseitige Einstellung handelt.
Auf der Nexus-Seite (Server-Repo-Seite) ist dieses Problem beim Konfigurieren einer geplanten Aufgabe behoben. Auf der Clientseite erfolgt dies
-U
, wie Sie bereits betont haben.quelle
Sie können das entsprechende fehlerhafte Artefaktverzeichnis in Ihrem lokalen Repository löschen. Und auch Sie können einfach das
-U
im Ziel verwenden. Es wird die Arbeit machen. Dies funktioniert mit Maven 3. Sie müssen also kein Downgrade auf Maven 2 durchführen.quelle
~/.m2/settings.xml/<repositories>
, um dieses Problem mit -U-Optionen zu behebenIch hatte ein ähnliches Problem, aber Raghurams Antwort half. (Ich habe noch nicht genug Ruf, um seine Antwort abzustimmen). Ich verwende Maven, das mit NetBeans gebündelt ist, und habe 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]" erhalten .
Um dies zu beheben, habe ich hinzugefügt
<updatePolicy>always</updatePolicy>
meine Einstellungsdatei (C: \ Programme \ NetBeans 7.0 \ java \ maven \ conf \ settings.xml).quelle
Was im Grunde passiert, ist, dass laut Standard-UpdatePolicy von maven.Maven die Gläser täglich aus dem Repo abruft. Wenn Ihr Internet beim ersten Versuch nicht funktioniert hat, würde es nicht versuchen, dieses Glas bis zu 24 Stunden erneut abzurufen.
Auflösung :
Entweder verwenden
Dabei erzwingt -U die Aktualisierung des Repos
oder verwenden
in Ihrer settings.xml
quelle
Gemäß den Einstellungen Referenz :
Beispiel:
quelle
Sie können dies zwar mit einer Neuinstallation beheben (wobei alle zwischengespeicherten Abhängigkeiten überschrieben werden), wie @ Sanjeev-Gulgani mit vorschlägt
mvn -U clean install
Sie können auch einfach die zwischengespeicherte Abhängigkeit entfernen, mit der das Problem verursacht wird
Weitere Informationen finden Sie in den MVN-Dokumenten .
quelle
Dieser Fehler kann manchmal irreführend sein. 2 Dinge, die Sie überprüfen möchten:
Gibt es eine tatsächliche JAR für die Abhängigkeit im Repo? Ihre Fehlermeldung enthält eine URL, nach der gesucht wird. Gehen Sie also dorthin und navigieren Sie zu dem Ordner, der Ihrer Abhängigkeit entspricht. Gibt es ein Glas? Wenn nicht, müssen Sie Ihre Abhängigkeit ändern. (Sie könnten beispielsweise auf eine übergeordnete Abhängigkeit der obersten Ebene zeigen, wenn Sie auf ein Unterprojekt zeigen sollten.)
Wenn das Glas auf dem Remote-Repo vorhanden ist, löschen Sie einfach Ihre lokale Kopie. Es befindet sich in Ihrem Home-Verzeichnis (sofern Sie es nicht anders konfiguriert haben) unter .m2 / repository (ls -a wird unter Linux ausgeblendet angezeigt).
quelle
Wenn Sie Eclipse verwenden, gehen Sie zu Windows -> Einstellungen -> Maven und deaktivieren Sie das Kontrollkästchen "Abhängigkeiten von Remote-Repositorys nicht automatisch aktualisieren".
Dies funktioniert auch mit Maven 3.
quelle
Sie müssen alle "_maven.repositories" -Dateien aus Ihrem Repository löschen.
quelle
Dies funktioniert, nachdem Sie die zugehörige Abhängigkeit aus Ihrem lokalen Maven-Repository gelöscht haben
quelle
Wenn Sie Nexus als Proxy-Repo verwenden, hat es die Einstellung "Nicht gefundener Cache TTL" mit dem Standardwert 1440 Minuten (oder 24 Stunden). Das Verringern dieses Werts kann hilfreich sein (Repositorys> Konfiguration> Ablaufeinstellungen).
Weitere Informationen finden Sie in der Dokumentation .
quelle
Wie ich zu diesem Problem kam,
Als ich von Eclipse Juno zu Luna wechselte und meine Maven-Projekte von SVN Repo aus überprüfte, traten beim Erstellen der Anwendungen dieselben Probleme auf.
Was habe ich versucht? Ich habe versucht, das lokale Repository zu bereinigen und dann alle Versionen erneut mit der Option -U zu aktualisieren. Aber mein Problem ging weiter.
Dann ging ich zu Fenster -> Einstellungen -> Maven -> Benutzereinstellungen -> und klickte auf die Schaltfläche Neu indizieren unter Lokales Repository und wartete, bis die Neuindizierung erfolgte.
Das ist alles, das Problem ist behoben.
quelle
Um die Titelfrage endgültig zu beantworten: Sie befindet sich (eine clientseitige Einstellung) in (Projekt, Profil oder Einstellungen).
... Etikett.
Die (derzeit maven: 3.6.0, aber ich nehme an, "weit rückwärts" kompatibel) möglichen Werte sind:
Die aktuelle (maven 3.6.0) Auswertung dieses Tags wird wie folgt implementiert:
..mit:
... wo
lastModified
ist der "geänderte Zeitstempel" der (lokalen Datei) eines / jedes zugrunde liegenden Artefakts?Insbesondere für die
interval:x
Einstellung::
ist nicht so streng - jedes "nicht leere" Zeichen könnte es tun (=
,, ...).
x < 0
sollten "nie" ergeben.interval:0
Ich würde ein "minutiöses" Intervall (0-59 Sekunden oder mehr ...) annehmen.24 * 60
Minuten (~ "täglich")...siehe: DefaultUpdatePolicyAnalyzer , DefaultMetadataResolver # resolveMetadata () und RepositoryPolicy
quelle
Für Intellij- Benutzer hat Folgendes für mich funktioniert:
Klicken Sie mit der rechten Maustaste auf Ihr Paket
und
quelle
Etwas relevant. Ich wurde
Dieser Fehler wurde durch versehentliche Verwendung von
Maven 3
anstelle von verursachtMaven 2
. Ich dachte nur, es könnte jemandem Zeit sparen, weil meine erste Google-Suche mich zu dieser Seite führte.quelle
Maven verfügt über updatePolicy- Einstellungen zum Festlegen der Häufigkeit, mit der die Aktualisierungen im Repository überprüft oder das Repository mit Remote synchronisiert werden soll.
Das folgende Codebeispiel kann zur Maven-Benutzereinstellungsdatei hinzugefügt werden, um updatePolicy zu konfigurieren.
quelle
If client-side, how do I configure it?
. Bei dieser Antwort handelt es sich nicht um eine IDE-Funktion. Es ist nur MVN-Repository-Konfiguration. DiesupdatePolicy
ist das Intervall, nach dem das OP fragt.In meinem Fall war die Lösung dumm: Ich hatte nur falsche Abhängigkeitsversionen.
quelle
Ich hatte dieses Problem und die umfassenden Beschreibungen in vorgeschlagenen diese half mir , es zu beheben.
Das zweite erklärte Problem war mein Problem. Ich habe ein Repository eines Drittanbieters verwendet, das ich gerade hinzugefügt habe, um den
repository
Teil der POM-Datei in meinem Projekt zu erledigen . Ich füge die gleichen Repository-Informationen hinzupluginrepository
, um dieses Problem zu beheben.quelle
Ich hatte einen ähnlichen Fehler mit einem anderen Artefakt.
Keine der oben beschriebenen Lösungen hat bei mir funktioniert. Ich habe dies schließlich in IntelliJ IDEA durch Datei> Caches ungültig machen / Neustart ...> Ungültig machen und neu starten behoben .
quelle
In meinem Fall hatte ich mehrere Projekte
Wenn ich "mvn clean install" aus dem Verzeichnis "domainProject" ausgeführt habe, wird der Fehler angezeigt.
Als ich "mvn clean install" aus dem Verzeichnis "projectRoot" ausgeführt habe, ist das Problem behoben.
quelle