Za pomocą maven od czasu do czasu trafiam w artefakt pochodzący z repozytorium innej firmy, którego jeszcze nie zbudowałem ani nie zawarłem w moim repozytorium.
Otrzymam komunikat o błędzie od klienta maven informujący, że artefaktu nie można znaleźć:
Nie udało się znaleźć org.jfrog.maven.annomojo: maven-plugin-anno: jar: 1.4.0 in
http://myrepo:80/artifactory/repo
zostało zbuforowane w lokalnym repozytorium, rozwiązanie nie będzie podejmowane ponownie, dopóki nie upłynie interwał aktualizacji MyRepo lub aktualizacje zostaną wymuszone -> [ Pomoc 1]
Teraz mogę zrozumieć, co to znaczy, a może po prostu ponownie uruchomić mojego polecenia z -U
, a rzeczy pracują zazwyczaj drobne stamtąd na out .
Uważam jednak, że ten komunikat o błędzie jest wyjątkowo nieintuicyjny i staram się oszczędzić moim współpracownikom pewnych problemów.
Próbuję dowiedzieć się, czy jest miejsce, w którym mogę zmodyfikować to update interval
ustawienie.
- Czy to,
update interval
co jest wymienione w tym komunikacie o błędzie, jest ustawieniem po stronie klienta czy po stronie serwera? - Jeśli po stronie klienta, jak to skonfigurować?
- Jeśli po stronie serwera, czy ktoś wie, jak / jeśli Nexus / Artifactory ujawnia te ustawienia?
źródło
pom.xml
.Odpowiedzi:
Kiedyś rozwiązałem ten problem, usuwając odpowiedni nieudany katalog artefaktów w moim lokalnym repozytorium. Następnym razem, gdy uruchomię polecenie maven, pobieranie artefaktów zostanie ponownie uruchomione. Dlatego powiedziałbym, że to ustawienie po stronie klienta.
Strona Nexus (strona repo serwera), ten problem został rozwiązany podczas konfigurowania zaplanowanego zadania. Po stronie klienta odbywa się to za pomocą
-U
, jak już wskazałeś.źródło
możesz usunąć odpowiedni uszkodzony katalog artefaktów w swoim lokalnym repozytorium. A także możesz po prostu użyć
-U
celu. Wykona pracę. Działa to z maven 3. Nie trzeba więc obniżać wersji do maven 2.źródło
~/.m2/settings.xml/<repositories>
aby rozwiązać ten problem z opcjami -UMiałem powiązany problem, ale odpowiedź Raghurama pomogła. (Nie mam jeszcze wystarczającej reputacji, aby głosować na jego odpowiedź). Korzystam z Maven w pakiecie z NetBeans i otrzymywałem ten sam komunikat „... został zapisany w pamięci podręcznej w lokalnym repozytorium, rozdzielczość nie zostanie ponowiona, dopóki nie upłynie interwał aktualizacji nexusa lub aktualizacje zostaną wymuszone -> [Pomoc 1] błąd .
Aby to naprawić, dodałem
<updatePolicy>always</updatePolicy>
do pliku ustawień (C: \ Program Files \ NetBeans 7.0 \ java \ maven \ conf \ settings.xml)źródło
Zasadniczo dzieje się tak, zgodnie z domyślną aktualizacją Polityka maven.Maven będzie codziennie pobierał słoiki z repozytorium, więc jeśli podczas pierwszej próby Twój Internet nie działał, nie będzie próbował pobrać słoika ponownie, dopóki nie spędzą 24 godzin.
Rozdzielczość:
Albo użyj
gdzie -U wymusi aktualizację repozytorium
albo użyj
w twoich ustawieniach.xml
źródło
Zgodnie z odniesieniem do ustawień :
Przykład:
źródło
Możesz to rozwiązać za pomocą czystej instalacji (przesłaniającej wszelkie buforowane zależności), jak sugeruje @ Sanjeev-Gulgani z
mvn -U clean install
Możesz także po prostu usunąć buforowaną zależność, która powoduje problem
Zobacz mvn docs, aby uzyskać więcej informacji.
źródło
Ten błąd może czasem wprowadzać w błąd. 2 rzeczy, które możesz chcieć sprawdzić:
Czy istnieje rzeczywisty plik JAR dla zależności w repozytorium? Twój komunikat o błędzie zawiera adres URL miejsca, w którym szuka, więc przejdź tam, a następnie przejdź do folderu pasującego do Twojej zależności. Czy jest słoik? Jeśli nie, musisz zmienić swoją zależność. (na przykład możesz wskazywać zależność nadrzędnego najwyższego poziomu, kiedy powinieneś wskazać podprojekt)
Jeśli słoik istnieje na zdalnym repozytorium, usuń po prostu lokalną kopię. Będzie on w twoim katalogu domowym (chyba że skonfigurowano inaczej) w .m2 / repository (ls -a, aby pokazać ukryty, jeśli w systemie Linux).
źródło
Jeśli używasz Eclipse, przejdź do Windows -> Preferencje -> Maven i odznacz pole „Nie aktualizuj automatycznie zależności ze zdalnych repozytoriów”.
Działa to również z Maven 3.
źródło
Musisz usunąć wszystkie pliki „_maven.repositories” ze swojego repozytorium.
źródło
Działa to po usunięciu powiązanej zależności z lokalnego repozytorium maven
źródło
Jeśli używasz Nexusa jako repozytorium proxy, ma ono ustawienie „Nie znaleziono pamięci podręcznej TTL” z wartością domyślną 1440 minut (lub 24 godzin). Obniżenie tej wartości może pomóc (Repozytoria> Konfiguracja> Ustawienia ważności).
Zobacz dokumentację aby uzyskać więcej informacji.
źródło
Jak mam ten problem,
Kiedy zmieniłem z Eclipse Juno na Luna i sprawdziłem moje projekty maven z repozytorium SVN, miałem te same problemy podczas tworzenia aplikacji.
Co próbowałem Próbowałem wyczyścić lokalne repozytorium, a następnie ponownie zaktualizować wszystkie wersje za pomocą opcji -U. Ale mój problem trwał.
Następnie poszedłem do okna -> Preferencje -> Maven -> Ustawienia użytkownika -> i kliknąłem przycisk Reindex w Lokalnym repozytorium i czekam na reindex.
To wszystko, problem został rozwiązany.
źródło
Aby w końcu odpowiedzieć na pytanie tytułowe: To jest (ustawienie po stronie klienta) w (projekt, profil lub ustawienia)
... tag.
(Obecnie maven: 3.6.0, ale przypuszczam, że możliwe są „dalekie wstecz” kompatybilne):
Bieżąca ocena tego tagu (maven 3.6.0) jest realizowana w następujący sposób:
..z:
... gdzie
lastModified
jest (zmodyfikowany plik lokalny) „zmodyfikowany znacznik czasu” artefaktu / każdego z nich.W szczególności dla
interval:x
ustawienia::
nie jest to ścisłe - dowolny znak „non-empty” może to zrobić (=
,...).
x < 0
powinny dawać „nigdy”.interval:0
Zakładałbym „drobiazgowo” (0–59 sekund lub więcej…) interwał.24 * 60
minuty (~ „codziennie”)... patrz: DefaultUpdatePolicyAnalyzer , DefaultMetadataResolver # resolMetadata () i RepositoryPolicy
źródło
Dla użytkowników Intellij działało dla mnie:
Kliknij pakiet prawym przyciskiem myszy
i
źródło
Nieco odpowiednie. Dostawałem
Ten błąd został spowodowany przypadkowym użyciem
Maven 3
zamiastMaven 2
. Po prostu pomyślałem, że może to komuś zaoszczędzić trochę czasu, ponieważ moja pierwsza wyszukiwarka google doprowadziła mnie do tej strony.źródło
Maven ma ustawienia updatePolicy określające częstotliwość sprawdzania aktualizacji w repozytorium lub synchronizację repozytorium ze zdalnym.
Poniższy przykładowy kod można dodać do pliku ustawień użytkownika maven w celu skonfigurowania updatePolicy.
źródło
If client-side, how do I configure it?
. Ta odpowiedź nie dotyczy żadnej funkcji IDE. Jest to konfiguracja tylko repozytorium mvn. JestupdatePolicy
to interwał, o który prosi OP.W moim przypadku rozwiązanie było głupie: właśnie miałem niepoprawne wersje zależności.
źródło
Miałem ten problem, a wyczerpujące opisy zaproponowane w tym pomogły mi go naprawić.
Drugim zadeklarowanym problemem był mój problem. Użyłem repozytorium innej firmy, które właśnie dodałem, do
repository
części pliku pom w moim projekcie. Dodaję te same informacje z repozytorium,pluginrepository
aby rozwiązać ten problem.źródło
Miałem podobny błąd z innym artefaktem.
Żadne z wyżej opisanych rozwiązań nie działało dla mnie. W końcu rozwiązałem to w IntelliJ IDEA przez Plik> Unieważnij pamięć podręczną / Uruchom ponownie ...> Unieważnij i uruchom ponownie .
źródło
W moim przypadku miałem wiele projektów
Kiedy zrobiłem „mvn clean install” z katalogu „domainProject”, dostałem komunikat o błędzie.
Kiedy zrobiłem „mvn clean install” z katalogu „projectRoot”, problem zniknął.
źródło