Zaimportowałem już działający projekt na inny komputer i zaczął on pobierać zależności.
Najwyraźniej moje połączenie internetowe uległo awarii i teraz otrzymuję:
>Build errors for comics; org.apache.maven.lifecycle.LifecycleExecutionException:
Failed to execute goal on project comicsTest: Could not resolve dependencies for project comicsTest:comicsTest:war:0.0.1-SNAPSHOT:
The following artifacts could not be resolved:
org.springframework:spring-context:jar:3.0.5.RELEASE,
org.hibernate:hibernate-entitymanager:jar:3.6.0.Final,
org.hibernate:hibernate-core:jar:3.6.0.Final,
org.hibernate:hibernate-commons-annotations:jar:3.2.0.Final,
org.aspectj:aspectjweaver:jar:1.6.8,
commons-lang:commons-lang:jar:2.5,
>mysql:mysql-connector-java:jar:5.1.13: Failure to transfer org.springframework:spring-context:jar:3.0.5.RELEASE from http://repo1.maven.org/maven2 was cached in the local repository, resolution will not be reattempted until the update interval of central has elapsed or updates are forced.
>Original error: Could not transfer artifact org.springframework:spring-context:jar:3.0.5.RELEASE from central (http://repo1.maven.org/maven2): No response received after 60000
Jak zmusić maven do aktualizacji?
Odpowiedzi:
-U
oznacza wymuś aktualizację zależności migawki . Zależności wersji nie mogą być aktualizowane w ten sposób.źródło
Jeśli Twoje lokalne repozytorium jest w jakiś sposób zepsute dla słoików wydania w przeciwieństwie do migawek (
-U
i--update-snapshots
tylko aktualizuj migawki), możesz wyczyścić lokalne repozytorium, wykonując następujące czynności:Prawdopodobnie chcesz następnie wyczyścić i zainstalować ponownie:
Dużo więcej informacji dostępnych na https://maven.apache.org/plugins/maven-dependency-plugin/examples/purging-local-repository.html
źródło
mvn dependency:purge-local-repository
, po prostu ponownie-U
wydaje się wymuszać aktualizację wszystkich zależności.Jeśli chcesz zaktualizować jedną zależność bez czyszczenia lub
-U
możesz po prostu usunąć ją z lokalnego repozytorium, a następnie skompilować.Poniższy przykład dotyczy aktualizacji
slf4j-api 1.7.1-SNAPSHOT
:źródło
Wszystkie odpowiedzi tutaj nie działały dla mnie. Użyłem metody młota:
To naprawiło problem :-)
źródło
.m2
katalogu o nazwie*.lastUpdated
find ~/.m2/ -name "*.lastUpdated" -delete
obejdzie się bez niebezpieczeństwaxargs
lubrm
przekroczenia pewnych limitów (jeśli znaleziono wiele plików).Możesz to zrobić skutecznie od
Eclipse IDE
. Oczywiście, jeśli go używasz.źródło
Na wypadek, gdyby ktoś chciał tylko zaktualizować zależności migawki projektu i nie chciał instalować artefaktu:
Nie zapomnij ponownie zaimportować zależności w swoim IDE. W IDEA musisz kliknąć prawym przyciskiem myszy plik pom i wybrać Maven -> Reimport
źródło
Jeśli nie masz pewności, co znajduje się w twoim lokalnym repozytorium, zalecamy uruchomienie kompilacji z opcją:
W ten sposób zapewnisz możliwość budowania w pomieszczeniu czystym.
źródło
W moim przypadku najpierw zrobiłem:
Nadal wyświetlał ten sam błąd, a następnie zamknąłem projekt i ponownie go otworzyłem. Wreszcie działało.
źródło
Jeśli używasz środowiska IDE Eclipse, wówczas:
Naciśnij alt + F5, pojawi się okno aktualizacji projektu Maven.
Sprawdź - wymuś aktualizację migawek / wydań i kliknij OK.
Jeśli używasz Intellij IDE
źródło
Użyłem IntelliJ IDE i miałem podobny problem. Aby rozwiązać, kliknąłem w „Generuj źródła i aktualizuj foldery dla wszystkich projektów” w zakładce Maven.
źródło
Mam błąd w innym kontekście. Więc moje rozwiązanie może być przydatne dla innych, którzy natkną się na pytanie:
Problem: skopiowałem lokalne repozytorium na inny komputer, który nie ma połączenia ze specjalnym repozytorium. Więc maven próbował sprawdzić artefakty pod kątem nieprawidłowego repozytorium.
Moje rozwiązanie: Usuń pliki _maven.repositories.
źródło
To jedna z najbardziej denerwujących rzeczy w Maven. Dla mnie dzieje się tak: Jeśli dodam zależność żądającą większej liczby zależności i coraz więcej, ale mam wolne połączenie, wydaje się, że zatrzymam się podczas pobierania i przekroczenia limitu czasu. Podczas przekroczenia limitu czasu wszystkie zależności, które nie zostały jeszcze pobrane, są oznaczone symbolami zastępczymi w pamięci podręcznej .m2, a Maven nie (nigdy) nie odbierze, chyba że usunę wpis zastępczy z pamięci podręcznej (jak wspomniano inaczej), usuwając go.
Tak dalece, jak to widzę, Maven lub dokładniej, wtyczka Eclipse Maven ma błąd w tym zakresie. Ktoś powinien to zgłosić.
źródło
Musisz sprawdzić plik settings.xml w
<maven_home>/conf
katalogu.źródło
Mam ten sam błąd związany z zależnością android-map-utils. Korzystanie z pakietu typu AAR w sekcji zależności rozwiązuje mój problem. Domyślnie typem jest jar, więc można sprawdzić, jaki typ zależności w repozytorium jest pobierany.
źródło
Aby rozwiązać ten problem z Eclipse:
1) Dodaj zależność poniżej w Maven pom.xml i zapisz plik pom.xml.
2) Przejdź do projektu >> Maven >> Zaktualizuj projekt
wybierz projekt i kliknij OK.
3) Krok opcjonalny, jeśli nie zostanie rozwiązany do kroku 2, to wykonaj krok poniżej po wykonaniu kroku 1
Przejdź do projektu >> Maven >> Zaktualizuj projekt >> zaznacz pole wyboru „Wymuś aktualizację migawek / wydań”
wybierz projekt i kliknij OK.
źródło
Poprzednie wersje maven nie wymuszały sprawdzania brakujących wersji gdy były używane -U z czystą instalacją mvn, tylko migawki, chociaż nowsza wersja to obsługuje.
Dla kogoś, kto wciąż boryka się z poprzednią wersją, pomocne może być:
W systemie Windows:
W systemie Linux:
Ilekroć maven nie może pobrać zależności z jakiegokolwiek powodu (łączność / nie istnieje itp.), Doda „.error = Could not transfer artefact” w pliku dependence-name.lastUpdate w odpowiednim folderze w katalogu $ home / .m2. Usunięcie tych plików zmusi maven do ponownego pobrania zależności.
źródło
Ważne jest, aby dodać, że główna różnica w działaniu
mvn
z -U i bez -U jest taka-U
że zastąpi lokalne słoiki SNAPSHOT zdalnymi słojami SNAPSHOT.Lokalne słoiki SNAPSHOT utworzone z lokalnych
mvn install
w przypadku, gdy masz inne moduły swojego proj, które generują słoiki.źródło
-U służy do wymuszenia aktualizacji maven Repo. Posługiwać się
źródło
Próbowałem tutaj wszystkich odpowiedzi, ale wydawało się, że nic nie działa. Najpierw uruchomiłem ponownie komputer, a następnie uruchomiłem
mvn clean install -U
. To rozwiązało mój problem.źródło
To, co robi maven, pobiera wszystkie zależności projektu do lokalnego repozytorium (folder .m2). Ponieważ Internet powoduje problemy z lokalnym repozytorium, projekt napotyka problemy. Nie jestem pewien, czy to z pewnością ci pomoże, ale możesz spróbować usunąć wszystkie pliki w folderze repozytorium w folderze .m2. Ponieważ w lokalnym repozytorium nie będzie niczego, maven będzie zmuszony ponownie pobrać zależności, co wymusi aktualizację. Ogólnie folder .m2 znajduje się pod adresem c: users: [nazwa użytkownika] :. m2
źródło
Miałem ten problem z innego powodu. Poszedłem do repozytorium maven https://mvnrepository.com, szukając najnowszej wersji Spring Core, która w tym czasie miała 5.0.0.M3 / Repozytorium pokazało mi ten wpis dla mojego pom.xml:
Jestem naiwnym głupcem, założyłem, że komentarz mówi mi, że słoik znajduje się w domyślnym repozytorium.
Jednak po wielu kłótniach zobaczyłem notatkę tuż pod xml z napisem „Uwaga: ten artefakt znajduje się w publicznym repozytorium Alfresco ( https://artifacts.alfresco.com/nexus/content/repositories/public/ ) „
Tak więc komentarz w XML jest całkowicie mylący. Słoik znajduje się w innym archiwum, dlatego Maven nie mógł go znaleźć!
źródło
Możemy wymusić pobranie najnowszej aktualizacji repozytorium wydania i migawki za pomocą poniższego polecenia:
źródło
Miałem ten sam błąd i bieganie,
mvn install -U
a następnie bieganiemvn install
działało dla mnie.źródło
Natknąłem się na to niedawno i uruchomienie następującego rozwiązało wszystkie problemy
źródło
-fae,--fail-at-end Only fail the build afterwards; allow all non-impacted builds to continue
Wydaje się to dziwnym sposobem naprawiania nieaktualizowanych zewnętrznych zależności.mvn clean install -U
nie działa Jednakmvn -U clean
po nim następujemvn clean install
.źródło