Saya memiliki masalah yang sama, dan saya menulis satu-baris di shell untuk melakukannya.
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]')/*
Saya melakukannya sebagai satu-liner karena saya ingin memiliki proyek Jenkins untuk menjalankan ini kapan saja saya butuhkan, jadi saya tidak perlu masuk ke hal-hal, dll. Jika Anda membiarkan sendiri shell-script untuk itu, Anda bisa menulisnya lebih bersih:
#!/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/*
Seharusnya berhasil, tetapi saya belum menguji semua skrip itu. (Saya sudah menguji perintah pertama, tetapi tidak seluruh skrip.) Pendekatan ini memiliki kelemahan menjalankan perintah rumit yang besar terlebih dahulu. Itu idempoten, jadi Anda bisa mengujinya sendiri. Penghapusan adalah perintahnya sendiri setelah itu, dan ini memungkinkan Anda untuk mencoba semuanya dan memeriksa apakah ia melakukan apa yang Anda pikirkan, karena Anda tidak boleh mempercayai perintah penghapusan tanpa verifikasi. Namun, itu pintar karena satu alasan: itu portabel. Ini menghormati file settings.xml Anda. Jika Anda menjalankan perintah ini, dan beri tahu maven untuk menggunakan file xml tertentu (argumen -s atau --settings), ini masih akan berfungsi. Jadi Anda tidak perlu bermain-main untuk memastikan semuanya sama di mana-mana.
Agak sulit, tapi ini cara yang layak untuk berbisnis, IMO.
-U
bendera yang akan memperbarui artefak?