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.

user303158
źródło

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.

Jörn Guy Süß
źródło
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.

Rubens Mariuzzo
źródło
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

user303158
źródło
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ść.

carlspring
źródło
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

rperez
źródło
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”.

Edward Kichot
źródło
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. :(

Adriano Ferreira de Paula
źródło