Aynı sorunu yaşadım ve bunu yapmak için bir mermi kabuğu yazdım.
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]')/*
Tek katmanlı olarak yaptım, çünkü ihtiyacım olduğunda bunu çalıştırmak için bir Jenkins projesine sahip olmak istedim, bu yüzden bir şeyler için oturum açmak zorunda kalmayacaktım, vb. daha temiz yazabilirsiniz:
#!/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/*
Çalışmalı, ama tüm bu senaryo test etmedim. (İlk komutu test ettim, ama tüm betiği test etmedim.) Bu yaklaşım ilk önce büyük bir karmaşık komut çalıştırmanın dezavantajına sahiptir. Bu idempotent, bu yüzden kendiniz için test edebilirsiniz. Silme işlemi daha sonra kendi komutudur ve bu, hepsini denemenizi ve ne düşündüğünü yaptığını kontrol etmenizi sağlar, çünkü doğrulama olmadan silme komutlarına güvenmemelisiniz. Ancak, iyi bir nedenden dolayı akıllı: Taşınabilir. Settings.xml dosyanıza saygı duyar. Bu komutu çalıştırıyorsanız ve maven'e belirli bir xml dosyası (-s veya --settings bağımsız değişkeni) kullanmasını söylerseniz, bu yine de işe yarayacaktır. Yani her şeyin aynı yerde olduğundan emin olmak zorunda değilsiniz.
Biraz tuhaf, ama iş yapmanın iyi bir yolu, IMO.
-U
Eserleri güncelleyecek bayrağı denediniz mi?