Làm cách nào để xóa tệp jar khỏi kho lưu trữ maven cục bộ đã được thêm vào với install: install-file?


122
mvn install:install-file -Dfile=phonegap-1.1.0.jar -DgroupId?=phonegap -DartifactId?=phonegap -Dversion=1.1.0 -Dpackaging=jar

Tôi sử dụng lệnh trên để cài đặt local jar vào repo cục bộ của maven. Bây giờ tôi đã có được sự phụ thuộc từ repo maven. Tôi muốn xóa cái này khỏi repo cục bộ. Làm thế nào để làm sạch nó?


Câu trả lời:


107

Mặc dù có một lệnh maven mà bạn có thể thực hiện để thực hiện việc này, nhưng việc xóa các tệp theo cách thủ công khỏi kho lưu trữ sẽ dễ dàng hơn.

Giống như điều này trên windows Documents and Settings\your username\.m2hoặc $HOME/.m2trên Linux


10
Tôi sẽ chỉ xóa .m2/repository directory. Một đồng nghiệp đã xóa thư mục .m2 trước đó và nó gây ra sự cố vì trong dự án của chúng tôi, chúng tôi phải sửa đổi settings.xmltệp.
Tiris

7
Lưu ý rằng với việc xóa .m2/repositorythư mục, bạn cũng sẽ xóa tất cả các tệp plugin maven. Trong khi bằng cách sử dụng purge-local-repositorylệnh, bạn chỉ xóa các phần phụ thuộc.
collinhaines

3
Cấu trúc thư mục bên dưới .m2/repositoryđược sắp xếp theo ID nhóm Maven, vì vậy bạn chỉ có thể xóa thư mục con tương ứng với cấu phần mà bạn muốn xóa.
Kevin Krumwiede

124

Mặc dù xóa tệp theo cách thủ công, nhưng có một cách chính thức để xóa các phần phụ thuộc của dự án khỏi kho lưu trữ cục bộ (bộ nhớ cache) của bạn và tùy chọn giải quyết lại chúng từ các kho lưu trữ từ xa.

Mục tiêu purge-local-repository, trên plugin phụ thuộc Maven tiêu chuẩn, sẽ xóa các phụ thuộc được cài đặt cục bộ của dự án này khỏi bộ nhớ cache của bạn. Theo tùy chọn, bạn có thể phân giải lại chúng từ các kho lưu trữ từ xa cùng một lúc.

Điều này nên được sử dụng như một phần của giai đoạn dự án vì nó áp dụng cho các phần phụ thuộc của dự án chứa. Ngoài ra, các phụ thuộc bắc cầu cũng sẽ được xóa (cục bộ) theo mặc định.

Nếu bạn muốn xóa rõ ràng một cấu phần khỏi bộ nhớ cache, hãy sử dụng purge-local-repositoryvới manualIncludetham số. Ví dụ, từ dòng lệnh:

mvn dependency:purge-local-repository -DmanualInclude="groupId:artifactId, ..."

Tài liệu ngụ ý rằng điều này không loại bỏ các phụ thuộc bắc cầu theo mặc định. Nếu bạn đang chạy với vị trí bộ nhớ cache không chuẩn hoặc trên nhiều nền tảng, thì những điều này đáng tin cậy hơn việc xóa tệp "bằng tay".

Tài liệu đầy đủ có trong thông số kỹ thuật của maven-dependency-plugin .

Lưu ý : Các phiên bản cũ hơn của dependencyplugin maven có một manual-purge-local-repositorymục tiêu, hiện tại (phiên bản 2.8) được ngụ ý khi sử dụng manualInclude. Tài liệu cho manualIncludes(với một s) cũng nên được đọc.


Tôi không tin rằng điều này hoạt động đối với .jarnhững thứ không được tải xuống từ trung tâm maven hoặc một số kho lưu trữ khác. Khi tôi chạy lệnh này nó được thoát khỏi tất cả các .jars tự động tải về, nhưng khi nó được cho là .jars mà tôi tự cài đặt, nó kết quả đầu ra thông báo lỗi này: [ERROR] Failed to execute goal org.apache.maven.plugins:maven-dependency-plugin:2.8:purge-local-repository (default-cli) on project alloy-generator: Failed to refresh project dependencies for: myartifact: required artifacts missing: [ERROR] manually-downloaded-and-installed.jar ...
stiemannkj1

3
Trên thực tế, sau khi tôi kiểm tra nó, tôi nhận ra rằng nó không gỡ cài đặt .jar, nhưng nó vẫn xuất hiện lỗi. Vì vậy, đối với .jarcác tệp đã được cài đặt theo cách thủ công, tôi khuyên bạn nên xóa theo cách thủ công hơn là sử dụng phương pháp này, bởi vì maven tạo ra một số tệp kỳ lạ giống như yourjar.jar.lastUpdatedyourjar.pom.lastUpdatedbạn có thể cần xóa theo cách thủ công. Nhưng nếu maven tự động quản lý tất cả các phụ thuộc, thì đây là một cách tuyệt vời để gỡ cài đặt các phụ thuộc.
stiemannkj1

Cách tiếp cận này cũng yêu cầu một dự án maven để chạy lệnh. Điều này dường như không hoạt động nếu bạn chạy lệnh cài đặt mà OP chỉ định trong ngữ cảnh giả sử một bản dựng Gradle.
jdonmoyer

19

Ít nhất trên phiên bản maven hiện tại, bạn cần thêm công tắc -DreResolve = false nếu bạn định xóa các phụ thuộc khỏi repo cục bộ của mình mà không cần tải lại chúng.

mvn dependency:purge-local-repository -DreResolve=false

loại bỏ các phụ thuộc mà không cần tải lại chúng.


bạn có thể vui lòng xem qua: stackoverflow.com/questions/58937713/…
gstackoverflow

12

Xóa mọi thứ (jar, pom.xml, v.v.) trong ~/.m2/repository/phonegap/1.1.0/thư mục cục bộ của bạn nếu bạn đang sử dụng hệ điều hành linux.


Khi tôi xóa jar theo cách đó, nó sẽ "tải lại" jar từ thư mục cũ. Có thể có những tài liệu tham khảo cũng cần được loại bỏ.
Antonio Sesto

0

Tôi đã đối mặt với cùng một vấn đề, đã xem qua tất cả các đề xuất ở trên, nhưng không có gì hiệu quả. Cuối cùng tôi đã xóa cả thư mục .m2 và .ivy và nó đã hoạt động với tôi.


-6
  1. cd ~/.m2
  2. git init
  3. git commit -am "some comments"
  4. cd /path/to/your/project
  5. mvn install
  6. cd ~/.m2
  7. git reset --hard

5
Câu trả lời này có thể giải quyết được vấn đề hoặc có thể không giải quyết được vấn đề, nhưng còn việc thêm một số lời giải thích vào câu trả lời của bạn thì sao, điều này có thể chỉ giúp OP hiểu những gì bạn đang cố gắng cho anh ta thấy.
Gerhard

2
Phản hồi này không liên quan đến sự cố: bạn hiển thị thiết lập kho lưu trữ git trong thư mục .m2 và đặt lại làm kho lưu trữ git.
lquitadamo,
Khi sử dụng trang web của chúng tôi, bạn xác nhận rằng bạn đã đọc và hiểu Chính sách cookieChính sách bảo mật của chúng tôi.
Licensed under cc by-sa 3.0 with attribution required.