Pliki do pobrania Maven mają rozszerzenie .lastUpdated


82

Mam konfigurację Eclipse z m2eclipse i subversive. Zaimportowałem projekt maven2 z svn. Ale pojawia się komunikat o błędzie, że brakuje całej masy artefaktów (na przykład: Missing artifact org.springframework: spring-test: jar: 3.0.1.RELEASE: test).

Jeśli zajrzę do mojego repozytorium, widzę tam pliki jar, ale mają one dodatkowe rozszerzenie .lastUpdated. Dlaczego Maven dołącza rozszerzenie .lastUpdated do słoików? A co ważniejsze: jak mogę to naprawić?

W moich POMach nie ma wzmianki o typie lastUpdated.

Odpowiedzi:


60

Pliki te wskazują Mavenowi, że próbował uzyskać archiwum przez pobranie, ale nie powiódł się. Aby zaoszczędzić przepustowość, nie podejmie ponownej próby, dopóki nie upłynie określony czas zakodowany w pliku. Przełącznik wiersza polecenia -U wymusza wykonanie aktualizacji przed okresem ponawiania. Może to być konieczne, jeśli próbowałeś budować bez połączenia z siecią.

Metoda usuwania plików działa z większością wersji mavena, ale ponieważ pliki są wewnętrznymi pamiątkami dla mavena, nie polecam tej metody. Nie ma gwarancji, że do tych informacji nie odwołuje się ani nie są przechowywane w innym miejscu, a taka manipulacja może spowodować uszkodzenie systemu.


Próbowałem wyczyścić mvn -U, ale to nie rozwiązało problemu. Czy coś mi brakuje?
MiguelMunoz

Twoje ostatnie stwierdzenie w pierwszym akapicie brzmi dla mnie, jako nowicjusza, jak zaprzeczenie tej kwestii - może to być konieczne, jeśli próbowałeś budować bez połączenia z siecią. Jeśli spróbuję bez połączenia, -U spróbuje pobrać ze zdalnego repozytorium i zakończy się niepowodzeniem, zgodnie z moją interpretacją tego, co powiedziałeś.
Sandeepan Nath

Miałem na myśli, „ustawienie -U może być konieczne, jeśli próbowałeś budować bez połączenia z siecią, a znacznik został ustawiony”.
Jörn Guy Süß

14

Jak powiedział rperez , używam do usuwania wszystkich tych .lastUpdatedplików. W Linuksie stworzyłem mały skrypt, aby był prosty :

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

Po prostu utwórz plik z poprzednią zawartością i umieść go w lokalnym repozytorium Maven. Zwykle tak będzie ~/.m2/repository.


2
w zsh:rm ~/.m2/repository/**/*.lastUpdated
Dacav

3
Można też po prostu użyć znaleźć na deleteflagę, aby usunąć pliki znalezione zamiast execing rmna wynikach. Na przykładfind ~/.m2 -name *.lastUpdated -delete
spaaarky21

7

Zainstalowałem Maven2 i uruchomiłem kompilację mvn z wiersza poleceń. Wydaje się, że to rozwiązało problem


Kompilacja za pomocą wiersza poleceń rozwiązała ten problem za mnie. Myślę, że to może być problem z zaciekiem m2.
TAN70,

1
Działając w systemie Windows 7 Professional SP 1, w 2017 roku miałem podobne problemy z wtyczką Eclipse i porzuciłem ją na rzecz CLI, która zapewnia znacznie bardziej kompletne, użyteczne raporty, które mogę zapisać, zaimportować do programu Excel i generować różnego rodzaju przydatne raporty obejmujące brakujące pakiety, pliki, które nie zostały pobrane, niesparowane pliki POM i JAR oraz inne przydatne statystyki.
David A. Gray

2

Jeśli napotkasz ten problem i używasz Nexusa, może być tak, że masz zdefiniowaną regułę routingu, która jest nieprawidłowa. Uderzyłem w to sam i pliki, które pobierał, były poprawnie nazwane, pod odpowiednimi adresami URL, na które patrzył, ale wszystkie miały .lastUpdatedrozszerzenie i komunikat o błędzie jako zawartość.


1

możesz mieć problem z niektórymi artefaktami, które mają być pobrane z repozytorium. na przykład framework spring ma swoje własne repozytorium. to rozszerzenie jest dodawane, gdy nie można w pełni pobrać artefaktu. dodaj repozytorium spring framework do pom lub settings.xml, usuń folder zawierający uszkodzone słoiki i zacznij od nowa


Zgodzić się. Zamiast prawidłowego pom lub słoika, zwykle pom lub słoik zakończony lastUpdate ma rozmiar tylko 2k, którego zawartość bardziej przypomina dziennik błędów. Zwykle jest to wynikiem „nieudanego zebrania zależności o ...”
Tiina

To ciekawy sposób myślenia o nich; Zawsze myślałem o nich jako o osobnych jednostkach (zaktualizowanych plikach), a nie o plikach JAR lub POM, o których mówią. W ten sam sposób myślę o MyDotNetAssembly.exe.config jako o innym typie pliku niż MyDotNetAssembly.exe.
David A. Gray

0

Otwórz terminal, przejdź do katalogu projektu Eclipse i uruchom:

mvn install

Jeśli mvn installnie zaktualizuje twoich zależności, wywołaj go przełącznikiem, aby wymusić aktualizację:

mvn install -U

Jest to znacznie bezpieczniejsze podejście w porównaniu do manipulowania plikami maven podczas usuwania pliku „.lastUpdated”.


1
Mam ten sam problem i mvn install -Unie pomogłem. mvn clean installnie wykonał również pracy
roxch

0

Użyj tego polecenia w katalogu .m2 / repository, aby zmienić nazwy wszystkich plików:

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

Jest to przydatne, aby nie pobierać ponownie wszystkich źródeł.

To nie działa ... Plik .jar został utracony. :(

Korzystając z naszej strony potwierdzasz, że przeczytałeś(-aś) i rozumiesz nasze zasady używania plików cookie i zasady ochrony prywatności.
Licensed under cc by-sa 3.0 with attribution required.