Pracuję nad projektem z zależnością X. X z kolei zależy od Y.
Kiedyś wyraźnie umieszczałem Y w pliku pom mojego projektu. Jednak nie był używany i aby uczynić rzeczy czystszymi, zamiast tego dodałem go do X's pom jako zależność. X jest oznaczony jako zależność od wydania.
Problem polega na tym, że po usunięciu Y z pom mojego projektu i dodaniu go do pom X, mój projekt go nie odbiera mvn -U clean package
. Wiem, że -U aktualizuje migawki, ale nie wydania.
Więc bez usuwania katalogu ~ / .m2 / repository, jak mogę wymusić ponowne pobranie pom X's? Próbowałem też biegać dependency:purge-local-repository
i to też nie działało.
X
pom, to powinno to stanowić nowe wydanie, nawet jeśli jest to tylko zmiana numeru patcha:1.3
->1.3.1
. To wyeliminowałoby ten problem od samego początku.Odpowiedzi:
Nie można zmusić Mavena do ponownego pobierania zależności, ale zamiast tego można usunąć zależności, które zostały niepoprawnie pobrane przy użyciu
mvn dependency:purge-local-repository
Zobacz: http://maven.apache.org/plugins/maven-dependency-plugin/purge-local-repository-mojo.html
źródło
mvn dependency:purge-local-repository clean package
, jeden projekt może usunąć tę samą zależność w repozytorium lokalnym, podczas gdy inny projekt jest uruchomiony kompilacji. Jak ominąć?Właśnie usunąłem moje repozytorium ~ / .m2 / i to wymusiło ponowne pobranie;)
źródło
Myślę, że poniższe polecenie może ci pomóc!
źródło
Dzięki odpowiedzi Ali Tokmen. Udało mi się wymusić usunięcie określonej lokalnej zależności za pomocą następującego polecenia:
Dzięki temu usuwa
utils
z mojego repozytorium .m2 / i zawsze ponownie pobierautils
zależność JAR po uruchomieniumvn clean install
.źródło
Kliknij prawym przyciskiem myszy Projekt -> Maven -> Aktualizuj projekt i zaznacz pola wyboru jak na zrzucie ekranu. Zaktualizuje również wersje :)
źródło
-U oznacza wymuszenie aktualizacji zależności.
Jeśli chcesz zaktualizować pojedynczą zależność bez clean lub -U, możesz po prostu usunąć ją z lokalnego repozytorium, a następnie skompilować.
źródło
Kiedy dodałeś go do X, powinieneś zwiększyć numer wersji X, np. X-1.2
Następnie X-1.2 powinien zostać zainstalowany / wdrożony i powinieneś zmienić zależność projektów od X aby być zależnym od nowej wersji X-1.2
źródło
Jeśli znasz identyfikator grupy
X
, możesz użyć tego polecenia, aby ponownie pobrać wszystkieX
i ich zależnościRobi to samo, co inne odpowiedzi, które proponują użycie
dependency:purge-local-repository
, ale tylko usuwa i ponownie pobiera wszystko, co dotyczyX
.źródło
Jeśli naprawdę chcesz wymusić pobranie wszystkich zależności, możesz spróbować ponownie zainicjować całe repozytorium maven. Podobnie jak w tym artykule już opisanym, możesz użyć:
źródło
Po prostu usuń ~ / .m2 / repository ..... / current_path, gdzie nadchodzi nieprawidłowy LOC, ponieważ wymusza ponowne pobranie usuniętych plików jar. Nie usuwaj całego folderu repozytorium, zamiast tego usuń określony folder, z którego nadchodzi błąd.
źródło
Usunięcie
~/.m2/repository
rozwiąże Twój problem. Ale jeśli nadal chcesz zachować starą~/.m2/repository
, możesz po prostu tymczasowo zmienić lokalną ścieżkę maven.Jeśli pracujesz na IntelliJ, po prostu przejdź do Maven Settings i zmień ścieżkę lokalnego repozytorium na inne. Może być konieczne zaznaczenie pola wyboru zastąpienia obok.
źródło
Większość odpowiedzi udzielonych powyżej rozwiązałoby problem.
Ale jeśli używasz IntelliJ i chcesz, aby po prostu naprawił to automatycznie, przejdź do Ustawień Mavena.
Kompilacja, wykonanie, wdrożenie -> Narzędzia kompilacji -> Maven
Wyłącz pracę w trybie offline
Włącz opcję Zawsze aktualizuj migawki (przełącz w razie potrzeby)
źródło
Idź do ścieżki budowania ... usuń istniejącą bibliotekę Maven u dodaną ... kliknij dodaj bibliotekę ... kliknij zależności zarządzane maven ... następnie kliknij ustawienia projektu maven ... zaznacz pole wyboru rozwiąż zależności maven ... to pobierze wszystko zależności maven
źródło