Maven-Downloads haben .lastUpdated als Erweiterung

80

Ich habe ein Eclipse-Setup mit m2eclipse und subversiv. Ich habe ein maven2-Projekt von svn importiert. Ich erhalte jedoch die Fehlermeldung, dass eine ganze Reihe von Artefakten fehlt (zum Beispiel: Fehlendes Artefakt org.springframework: spring-test: jar: 3.0.1.RELEASE: test).

Wenn ich in mein Repository schaue, sehe ich die JAR-Dateien dort, aber sie haben eine zusätzliche Erweiterung .lastUpdated. Warum hängt Maven .lastUpdated an die Gläser an? Und was noch wichtiger ist: Wie kann ich das beheben?

In meinen POMs wird der zuletzt aktualisierte Typ nicht erwähnt.

user303158
quelle

Antworten:

59

Diese Dateien weisen Maven darauf hin, dass versucht wurde, das Archiv per Download abzurufen, dies jedoch nicht erfolgreich war. Um Bandbreite zu sparen, wird dies erst nach Ablauf einer bestimmten in der Datei codierten Zeitspanne erneut versucht. Der Befehlszeilenschalter -U zwingt den Maven, die Aktualisierung vor der Wiederholungsperiode durchzuführen. Dies kann erforderlich sein, wenn Sie versucht haben, eine Verbindung herzustellen, während Sie nicht mit dem Netzwerk verbunden sind.

Die Methode zum Entfernen der Dateien funktioniert mit den meisten Versionen von Maven. Da es sich bei den Dateien jedoch um interne Erinnerungsstücke an Maven handelt, würde ich diese Methode nicht empfehlen. Es gibt keine Garantie dafür, dass diese Informationen nicht an anderer Stelle referenziert oder gespeichert werden und eine solche Manipulation das System beschädigen kann.

Jörn Guy Süß
quelle
Ich habe versucht, mvn -U sauber zu machen, aber das Problem wurde dadurch nicht behoben. Vermisse ich etwas
MiguelMunoz
Ihre letzte Aussage im ersten Absatz klingt für mich als Neuling in diesem Bereich wie ein Widerspruch. Dies kann erforderlich sein, wenn Sie versucht haben, eine Verbindung herzustellen, während Sie nicht mit dem Netzwerk verbunden sind. Wenn ich versuche, während die Verbindung getrennt ist, versucht -U, das Remote-Repository herunterzuladen, und schlägt gemäß meiner Interpretation Ihrer Aussagen fehl.
Sandeepan Nath
Ich meinte: "Die Einstellung -U kann erforderlich werden, wenn Sie versucht haben, zu erstellen, während Sie nicht mit dem Netzwerk verbunden sind, und die Markierung gesetzt wurde."
Jörn Guy Süß
14

Wie rperez sagte, lösche ich alle diese .lastUpdatedDateien. Unter Linux habe ich ein kleines Skript erstellt, um es einfach zu halten :

find -name \*.lastUpdated -exec rm -fv {} +

Erstellen Sie einfach eine Datei mit dem vorherigen Inhalt und legen Sie sie in Ihrem lokalen Maven-Repository ab. Normalerweise wird es so sein ~/.m2/repository.

Rubens Mariuzzo
quelle
2
in zsh:rm ~/.m2/repository/**/*.lastUpdated
Dacav
3
Sie können auch einfach das deleteFlag von find verwenden, um die gefundenen Dateien zu löschen, anstatt die Ergebnisse execanzuzeigen rm. Zum Beispielfind ~/.m2 -name *.lastUpdated -delete
spaaarky21
7

Ich habe Maven2 installiert und mvn compile über die Befehlszeile ausgeführt. Dies scheint das Problem gelöst zu haben

user303158
quelle
Das Kompilieren über die Befehlszeile hat dieses Problem für mich behoben. Ich denke, dies könnte ein m2eclipse-Problem sein.
TAN70
1
Unter Windows 7 Professional SP 1 hatte ich 2017 ähnliche Probleme mit dem Eclipse-Plug-In und habe es zugunsten der CLI aufgegeben, die viel vollständigere, verwendbarere Berichte enthält, die ich speichern, in Excel importieren und importieren kann Generieren Sie alle möglichen nützlichen Berichte über fehlende Pakete, nicht heruntergeladene Dateien, ungepaarte POMs und JARs sowie andere nützliche Statistiken.
David A. Gray
2

Wenn Sie auf dieses Problem stoßen und Nexus verwenden, ist möglicherweise eine Routing-Regel definiert, die falsch ist. Ich habe dies selbst getroffen und die Dateien, die heruntergeladen wurden, wurden korrekt benannt, unter den richtigen URLs, die es sich ansah, aber sie hatten alle die .lastUpdatedErweiterung und eine Fehlermeldung als Inhalt.

Carlspring
quelle
1

Möglicherweise haben Sie ein Problem mit einigen Artefakten, die aus dem Repository abgerufen werden sollen. Zum Beispiel hat Spring Framework ein eigenes Repository. Diese Erweiterung wird angehängt, wenn das Artefakt nicht vollständig heruntergeladen werden kann. Fügen Sie das Spring Framework-Repository zu Ihrer pom- oder settings.xml-Datei hinzu, löschen Sie den Ordner mit den defekten Gläsern und starten Sie erneut

rperez
quelle
Zustimmen. Anstelle eines gültigen Poms oder JARs hat ein Pom oder JAR, der mit einem lastUpdate endet, normalerweise nur eine Größe von 2 KB, dessen Inhalt eher einem Fehlerprotokoll ähnelt. Normalerweise ist ein Ergebnis von "Abhängigkeiten konnten nicht erfasst werden bei ..."
Tiina
Das ist eine interessante Art, über sie nachzudenken. Ich habe sie immer als separate Entitäten (zuletzt aktualisierte Dateien) betrachtet und nicht als JARs oder POMs, über die sie berichten. Ebenso stelle ich mir MyDotNetAssembly.exe.config als einen anderen Dateityp als MyDotNetAssembly.exe vor.
David A. Gray
0

Öffnen Sie Ihr Terminal, navigieren Sie zum Projektverzeichnis Ihrer Eclipse und führen Sie Folgendes aus:

mvn install

Wenn mvn installIhre Abhängigkeiten nicht aktualisiert werden, rufen Sie sie mit einem Schalter auf, um die Aktualisierung zu erzwingen:

mvn install -U

Dies ist ein viel sichererer Ansatz als das Manipulieren von Maven-Dateien beim Löschen von ".lastUpdated".

Edward Quijote
quelle
1
Ich habe das gleiche Problem und mvn install -Uhabe nicht geholfen. mvn clean installhabe den Job auch nicht gemacht
Roxch
0

Verwenden Sie diesen Befehl im Verzeichnis .m2 / repository, um alle Dateien umzubenennen:

for file in `find . -iname *.lastUpdated`; do renamed=$(echo $file | rev | cut -c13- | rev); echo renaming: $file to $renamed; mv $file $renamed; done

Dies ist nützlich, um nicht alle Quellen erneut herunterzuladen.

Das funktioniert nicht ... Die .jar ist verloren. :(

Adriano Ferreira de Paula
quelle