2011-09-13 27 views
123

Ostatnio Apache Maven wydaje się mieć problemy z buforowaniem. Wykonywanie czystych instalacji w naszych projektach przy użyciu systemu Windows Vista lub Windows 7 czasami powoduje powstawanie artefaktów z tymi samymi danymi, co w poprzedniej wersji, mimo że nowsze pliki artefaktów powinny zostać zaktualizowane.Jak wyczyścić pamięć podręczną Apache Maven?

Czy istnieje sposób na wyczyszczenie tej pamięci podręcznej, aby zmusić maven, aby zawsze uruchamiał czystą kompilację lokalnego artefaktu, który powinien zostać zbudowany?

W szczególności, mamy problemy z budowaniem webappa z wtyczką wojenną. Wersja Maven to 3.0.3. War wtyczka w wersji 2.1.1.

+2

Czy wypróbowałeś flagę '-U', która zaktualizuje artefakty? –

+2

Czy możesz podać więcej szczegółów? Czy osoby pozostające na utrzymaniu nie są aktualizowane podczas wojny? Jeśli tak, czy osoby będące na utrzymaniu mają wersje SNAPSHOT? – Raghuram

+0

Czy to projekt wielomodułowy? Czy sprawdziłeś numer wersji depedentów? Czy możesz się rozmnażać? 'mvn clean install' umieści nowe artefakty w lokalnym repozytorium? – palacsint

Odpowiedz

130

Usuń ręcznie artefakty (lub pełne lokalne repozytorium) z c:\Users\username\.m2\repository.

+4

Próbowałem już, nie działa. Dzięki za sugestię. – MetroidFan2002

+124

Jak to nie działa? –

+0

@ om-nom-nom: Dzięki za edycję! – palacsint

10

Czy sprawdziłeś/zmieniłeś ustawienia updatePolicy dla swoich repozytoriów w swoim settings.xml.

Ten element określa, jak często powinny wystąpić próby aktualizacji. Maven porówna lokalny znacznik czasu POM (zapisany w pliku maven-metadata z repozytorium ) do pilota. Dostępne są następujące opcje: zawsze, codziennie (domyślnie), interwał: X (gdzie X to liczba całkowita w minutach) lub nigdy.

Spróbuj ustawić na always.

+1

Możliwa pomoc dla anway radzenia sobie z tym ... Nie mam' < updatePolicy> 'w moim pom.xml, ale istnieje' ' –

5

To działa na Spring Tool Suite v 3.1.0.RELEASE, ale domyślam się, że jest również dostępny na Eclipse.

Po usunięciu artefaktów ręcznie (jak stwierdził palacsint powyżej) w Katalogu /username/.m2, re-index plików, wykonując następujące czynności:

Go na Windows-> Preferencje-> Maven- > Menu ustawień użytkownika.

Kliknij przycisk "Reindex" obok pola tekstowego "Lokalne repozytorium". Kliknij "Zastosuj", a następnie "OK" i gotowe.

112

Aby wyczyścić lokalną pamięć podręczną, spróbuj użyć wtyczki zależności.

  1. mvn dependency:purge-local-repository: To próba usunąć pliki lokalne repozytorium, ale zawsze idzie i wypełnia lokalne repozytorium po rzeczy zostały usunięte.
  2. mvn dependency:purge-local-repository -DreResolve=false: Dzięki temu unika się ponownego rozwiązywania zależności, ale wydaje się, że nadal trafiają one do sieci.
  3. mvn dependency:purge-local-repository -DactTransitively=false -DreResolve=false: Zostało to dodane przez Pawła Prażaka i wydaje się działać dobrze. Użyłbym trzeciego, jeśli chcesz opróżnić lokalne repo, i pierwszego, jeśli chcesz po prostu wyrzucić lokalne repozytorium i odzyskać zależności.
+4

jaka jest różnica między nimi? –

+8

Pierwsza to próba usunięcia plików lokalnego repozytorium, ale zawsze wychodzi i wypełnia lokalne repozytorium po usunięciu rzeczy. Drugi pozwala uniknąć ponownego rozpatrywania zależności, ale wydaje się, że wciąż trafia do sieci. Trzeci został dodany przez Pawła Prażaka i wydaje się, że działa dobrze. Użyłbym trzeciego, jeśli chcesz opróżnić lokalne repo, i pierwszego, jeśli chcesz po prostu wyrzucić lokalne repozytorium i odzyskać zależności. –

+0

gdzie wykonujemy tę akcję? CMD nie zna mvn ... – deadManN

0

chciałbym wykonać następujące czynności:

mvn dependency:purge-local-repository -DactTransitively=false -DreResolve=false --fail-at-end 

Flagi powiedzieć Maven, aby nie próbować rozwiązać zależności czy hit sieci. Usuń to, co widzisz lokalnie.

I dla dobrej miary, ignoruj ​​błędy (--fail-at-end) do samego końca.Czasem jest to użyteczne w przypadku projektów, które mają nieco zawiedlony zestaw zależności lub polegają na nieco pomieszanym wewnętrznym repozytorium (tak się dzieje).

+0

Przykro mi, nie rozumiem pytania: / –

Powiązane problemy