У меня была такая же проблема, и я написал для этого однострочную оболочку.
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]')/*
Я сделал это как однострочник, потому что хотел, чтобы проект Jenkins просто запускал это всякий раз, когда мне было нужно, чтобы мне не приходилось входить в систему и т. Д. Если вы позволите себе сценарий оболочки для этого, Вы можете написать это чище:
#!/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/*
Должно работать, но я не проверял весь этот сценарий. (Я протестировал первую команду, но не весь сценарий.) У этого подхода есть недостаток: сначала нужно запускать сложную сложную команду. Это идемпотент, так что вы можете проверить это сами. После этого удаление - это отдельная команда, и это позволяет вам все попробовать и проверить, выполняет ли она то, что, по вашему мнению, делает, потому что вы не должны доверять командам удаления без проверки. Тем не менее, он умный по одной уважительной причине: он портативный. Он уважает ваш файл settings.xml. Если вы запускаете эту команду и говорите maven использовать определенный XML-файл (аргумент -s или --settings), это все равно будет работать. Так что вам не нужно возиться с тем, чтобы убедиться, что все везде одинаково.
Это немного громоздко, но это достойный способ ведения бизнеса, ИМО.
-U
флаг, который обновит артефакты?