Buộc tải lại phụ thuộc phát hành bằng Maven


134

Đến lượt tôi, tôi đang làm việc với một dự án với sự phụ thuộc X. X, phụ thuộc vào Y.

Tôi đã từng bao gồm rõ ràng Y trong pom dự án của tôi. Tuy nhiên, nó không được sử dụng và để làm cho mọi thứ sạch hơn, thay vào đó tôi đã thêm nó vào pom của X như một sự phụ thuộc. X được đánh dấu là một phụ thuộc phát hành.

Vấn đề là sau khi loại bỏ Y khỏi pom của dự án của tôi và thêm nó vào pom của X, dự án của tôi không chọn nó mvn -U clean package. Tôi biết -U cập nhật ảnh chụp nhanh nhưng không phát hành.

Vì vậy, nếu không xóa thư mục ~ / .m2 / repository, làm cách nào tôi có thể tải lại pom của X? Ngoài ra, tôi đã thử chạy dependency:purge-local-repositoryvà nó cũng không hoạt động.


Bạn đã gắn thẻ các câu hỏi là "maven-2". Tùy chọn -U đã được thêm vào trong Maven 3 để giải quyết vấn đề này. Tôi muốn đề nghị nâng cấp.
Đánh dấu O'Connor

Chỉ từ góc độ phương pháp luận, nếu bạn thay đổi Xpom, thì nó sẽ tạo thành một bản phát hành mới, ngay cả khi đó chỉ là một bản vá thay đổi số: 1.3-> 1.3.1. Vì vậy, điều đó sẽ loại bỏ vấn đề này khỏi đi.
jpaugh

Tuy nhiên, vẫn có thể có các vấn đề tương tự với ảnh chụp nhanh, vì vậy thật tốt khi có một số câu trả lời.
jpaugh

Câu trả lời:


163

Bạn không thể tạo Maven tải xuống lại các phụ thuộc, nhưng điều bạn có thể làm thay vào đó là xóa các phụ thuộc được tải xuống không chính xác bằng cách sử dụng mvn dependency:purge-local-repository

Xem: http://maven.apache.org/plugins/maven-dependency-plugin/purge-local-reposeective-mojo.html


11
Đó không phải là điều tương tự sao?
Svish

2
Nó không yêu cầu quyền truy cập vào hệ thống tệp có thể là một vấn đề nếu bạn chỉ định cấu hình các công việc xây dựng (ví dụ: đối với hệ thống CI).
Oliver Drotbohm

2
Nếu nhiều dự án chạy mvn dependency:purge-local-repository clean package, có thể một dự án sẽ xóa cùng một phụ thuộc trong kho lưu trữ cục bộ trong khi một dự án khác đang chạy biên dịch. Làm sao để tránh?
vikyd

55

Tôi vừa xóa ~ / .m2 / kho lưu trữ của mình và điều đó buộc phải tải xuống lại;)


1
Nó giúp như là phương sách cuối cùng, tôi đã có một dự án trong đó nhật thực và maven hơi "bối rối". Chỉ cần xóa thư mục .m2 đã làm cho dự án biên dịch và chạy chính xác.
Leonardo

5
Cũng có thể xóa có chọn lọc các phụ thuộc mà bạn biết cần phải được làm mới từ bên trong kho lưu trữ. Một cuộc thanh trừng thủ công, nếu bạn muốn.
jpaugh

41

Tôi nghĩ rằng lệnh sau có thể giúp bạn!


mvn -U clean install

4
giải phóng sự phụ thuộc bằng Maven trong câu hỏi. Không, đây có thể là một bình luận tốt hơn.
Naman

31

Cảm ơn câu trả lời của Ali Tokmen. Tôi quản lý để buộc xóa phụ thuộc cục bộ cụ thể bằng lệnh sau:

mvn dependency:purge-local-repository -DmanualInclude=com.skyfish:utils

Với điều này, nó loại bỏ utilskhỏi .m2 / kho lưu trữ của tôi và nó luôn tải lại utilsphụ thuộc JAR khi tôi chạy mvn clean install.


1
Tôi chỉ đơn giản là cần một cách để buộc maven tải lại một phụ thuộc. Đây là câu trả lời duy nhất thực sự làm điều đó, trong khi các câu trả lời khác đề nghị loại bỏ mọi thứ. Cảm ơn bạn
smac89

14

Nhấp chuột phải vào dự án-> Maven -> Cập nhật dự án và kiểm tra các hộp kiểm như trong ảnh chụp màn hình. Nó cũng sẽ cập nhật các bản phát hành :)

nhập mô tả hình ảnh ở đây


5
Thật tuyệt khi biết họ đã triển khai phần "/ Phát hành" đó như thế nào.
Ulises Layera

Cảm ơn vì điều này chỉ những gì tôi cần.
JamesG

12
mvn clean install -U

-U có nghĩa là cập nhật lực lượng phụ thuộc.

Nếu bạn muốn cập nhật một phụ thuộc duy nhất mà không cần sạch hoặc -U, bạn có thể xóa nó khỏi repo cục bộ và sau đó xây dựng.


Một lần nữa, điều này chỉ tải lại phụ thuộc SNAPSHOT.
Zardoz89

6

Khi bạn thêm nó vào X, bạn sẽ tăng số phiên bản của X tức là X-1.2
Sau đó X-1.2 nên được cài đặt / triển khai và bạn nên thay đổi sự phụ thuộc dự án của mình vào X để phụ thuộc vào phiên bản X-1.2 mới


5

Nếu bạn biết id nhóm của X, bạn có thể sử dụng lệnh này để tải xuống lại tất cả Xvà nó phụ thuộc

mvn clean dependency:purge-local-repository -DresolutionFuzziness=org.id.of.x

Nó thực hiện tương tự như các câu trả lời khác đề xuất sử dụng dependency:purge-local-repository, nhưng nó chỉ xóa và tải lại mọi thứ liên quan đến X.


4

Nếu bạn thực sự muốn tải xuống tất cả các phụ thuộc, bạn có thể thử khởi tạo lại toàn bộ kho lưu trữ maven. Giống như trong bài viết này đã được mô tả, bạn có thể sử dụng:

mvn -Dmaven.repo.local=$HOME/.my/other/repository clean install

3

Chỉ cần xóa ~ / .m2 / kho lưu trữ ..... / fact_path nơi LỘC không hợp lệ đang đến vì nó buộc phải tải xuống lại các tệp jar đã xóa. Không xóa toàn bộ thư mục kho lưu trữ thay vào đó xóa thư mục cụ thể từ nơi xảy ra lỗi.


0

Xóa ~/.m2/repositorysẽ giải quyết vấn đề của bạn. Nhưng, nếu bạn vẫn cần giữ cái cũ, ~/.m2/repositorybạn có thể tạm thời thay đổi đường dẫn cục bộ.

Nếu bạn đang làm việc trên IntelliJ, chỉ cần truy cập Cài đặt Maven và thay đổi đường dẫn Kho lưu trữ cục bộ sang một nơi khác. Bạn có thể cần đánh dấu vào hộp kiểm ghi đè gần đó.

nhập mô tả hình ảnh ở đây


-1

Hầu hết các câu trả lời được cung cấp ở trên sẽ giải quyết vấn đề.

Nhưng nếu bạn sử dụng IntelliJ và muốn nó tự động sửa nó, hãy truy cập Maven Settings.

Xây dựng, thực thi, triển khai -> Công cụ xây dựng -> Maven

nhập mô tả hình ảnh ở đây

Vô hiệu hóa công việc ngoại tuyến

Bật Luôn cập nhật ảnh chụp nhanh (Chuyển khi có yêu cầu)


1
Tôi sẽ đánh giá cao nếu bạn cũng có thể chia sẻ lý do downvote trong khi bạn đang ở đó. Cảm ơn bạn.
Abhishek Nandgaonkar 19/12/18

1
Có lẽ, vì ảnh chụp nhanh không phải là bản phát hành, nên điều này không giải quyết được vấn đề.
soru

-2

Đi đến xây dựng đường dẫn ... xóa thư viện maven hiện tại bạn đã thêm ... nhấp vào thêm thư viện ... nhấp vào phụ thuộc được quản lý maven ... sau đó nhấp vào cài đặt dự án maven ... kiểm tra giải quyết hộp kiểm phụ thuộc maven..tôi sẽ tải xuống tất cả phụ thuộc maven


2
Giả định này sử dụng một số IDE, một giả định không được hỗ trợ bởi câu hỏi và bạn thậm chí không chỉ định IDE nào!
Phil
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.