Tôi đã có vấn đề tương tự, và tôi đã viết một lớp lót để làm điều đó.
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]')/*
Tôi đã làm nó như một lớp lót vì tôi muốn có một dự án Jenkins chỉ đơn giản là chạy nó bất cứ khi nào tôi cần, vì vậy tôi sẽ không phải đăng nhập vào công cụ, v.v. Nếu bạn cho phép mình viết kịch bản shell cho nó, bạn có thể viết nó sạch hơn:
#!/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/*
Nên hoạt động, nhưng tôi chưa thử tất cả kịch bản đó. (Tôi đã thử lệnh đầu tiên, nhưng không phải toàn bộ tập lệnh.) Cách tiếp cận này có nhược điểm là chạy lệnh phức tạp lớn trước. Nó là idempotent, vì vậy bạn có thể tự kiểm tra nó. Việc xóa là lệnh riêng của nó sau đó và điều này cho phép bạn thử tất cả và kiểm tra xem nó có làm như bạn nghĩ không, vì bạn không nên tin vào các lệnh xóa mà không cần xác minh. Tuy nhiên, nó thông minh vì một lý do chính đáng: Đó là hàng xách tay. Nó tôn trọng tệp settings.xml của bạn. Nếu bạn đang chạy lệnh này và bảo maven sử dụng một tệp xml cụ thể (đối số -s hoặc --sinstall), điều này sẽ vẫn hoạt động. Vì vậy, bạn không cần phải lo lắng về việc đảm bảo mọi thứ đều giống nhau ở mọi nơi.
Đó là một chút hiệu quả, nhưng đó là một cách kinh doanh tốt, IMO.
-U
cờ sẽ cập nhật hiện vật chưa?