Miałem ten sam problem i napisałem, żeby to zrobić.
rm -rf $(mvn help:evaluate -Dexpression=settings.localRepository\
-Dorg.slf4j.simpleLogger.defaultLogLevel=WARN -B \
-Dorg.slf4j.simpleLogger.log.org.apache.maven.cli.transfer.Slf4jMavenTransferListener=warn | grep -vF '[INFO]')/*
Zrobiłem to jako jedno-liniowy, ponieważ chciałem mieć projekt Jenkins, aby po prostu uruchamiał to w dowolnym momencie, więc nie musiałbym logować się do rzeczy itp. Jeśli pozwolisz sobie na skrypt powłoki, możesz napisać to czystsze:
#!/usr/bin/env bash
REPOSITORY=$(mvn help:evaluate \
-Dexpression=settings.localRepository \
-Dorg.slf4j.simpleLogger.defaultLogLevel=WARN \
-Dorg.slf4j.simpleLogger.log.org.apache.maven.cli.transfer.Slf4jMavenTransferListener=warn \
--batch-mode \
| grep -vF '[INFO]')
rm -rf $REPOSITORY/*
Powinien działać, ale nie przetestowałem całego tego skryptu. (Przetestowałem pierwsze polecenie, ale nie cały skrypt). Takie podejście ma tę wadę, że najpierw uruchamia duże, skomplikowane polecenie. Jest idempotentny, więc możesz to sprawdzić na własne oczy. Usunięcie jest potem jego własnym poleceniem, co pozwala wypróbować wszystko i sprawdzić, czy robi to, co myślisz, ponieważ działa, ponieważ nie powinieneś ufać poleceniom usuwania bez weryfikacji. Jest jednak sprytny z jednego dobrego powodu: jest przenośny. Szanuje twój plik settings.xml. Jeśli uruchomisz to polecenie i powiesz maven, aby używał określonego pliku xml (argument -s lub --settings), to nadal będzie działać. Nie musisz więc bawić się, upewniając się, że wszystko jest takie samo.
Jest trochę władczy, ale to dobry sposób na robienie interesów, IMO.
-U
flagi, która aktualizuje artefakty?