Khi lần đầu build một maven project trên máy tính, các dependecy được sử dụng trong project sẽ được download về. Ngoài việc các dependency này được sử dụng cho project thì maven còn lưu chúng vào một thư mục trên máy (.m2) với mục đích cache.
Ở các maven project sau, maven sẽ kiểm tra các dependency được sử dụng xem liệu đã tồn tại trong thư mục .m2 hay chưa, nếu đã tồn tại thì maven sẽ sử dụng thay vì phải download trên maven central giúp tăng tốc quá trình build maven project.
Tuy nhiên khi trải qua rất nhiều dự án, và cập nhật các dependency liên tục thì thư mục .m2 sẽ ngày một lớn hơn và chiếm giữ rất nhiều không gian bộ nhớ. Sau một thời gian nhất định thì chúng ta nên clear maven cache để tránh phải lưu trữ các dependency rác không còn được sử dụng, giải phóng vùng nhớ.
Để clear maven cache thủ công chúng ta có thể truy cập vào thư mục maven cache (.m2) vật lý và xóa chúng, ngoài ra chúng ta còn có thể sử dụng Maven dependency plugin.
Xóa thư mục maven cache
Thư mục .m2 được lưu ở các vị trí khác nhau tùy vào setting ban đầu chúng ta đặt. Ngoài ra chúng ta cũng cần lưu ý thư mục .m2 được ẩn mặc định nên cần thiết phải chỉnh lại setting trên máy cho phép hiển thị các file ẩn.
Trong Windows .m2 mặc định được đặt ở
C:\Users\<user_name>\.m2
Còn trên MacOS
/Users/<user_name>/.m2
Linux thì ở
/home/<user_name>/.m2
Khi xác định được vị trí của thư mục .m2 thì đơn giản chúng ta chỉ cần xóa nó đi là xong. Hoặc đối với các Unix-based như MacOS, Linux chúng ta có thể sử dụng lệnh:
rm -rf ~/.m2/repository
Hành động trên sẽ xóa toàn bộ các dependency được maven cache, chúng ta có thể xóa một số dependency nhất bằng cách truy cập vào thư mục .m2 và xóa chúng.
Nếu thư mục .m2 đã được đặt khác đi và bạn không biết nó được đặt ở đâu thì có thể sử dụng Maven Help plugin để tìm nó với lệnh:
mvn help:evaluate -Dexpression=settings.localRepository -q -DforceStdout
Clear cache với Maven dependency plugin
Thay vì phải tìm đến thư mục .m2 để xóa trực tiếp chúng ta có thể sử dụng Maven dependency plugin để đạt được điều tương tự với purge-local-repository goal.
mvn dependency:purge-local-repository -DactTransitively=false -DreResolve=false
Nguồn tham khảo