2011-05-06 42 views
7

Trong một trong những dự án Maven tôi, độ phân giải phụ thuộc sẽ thành công một lần, sau đó không cho sau này xây dựng nỗ lực:Maven độ phân giải 3 phụ thuộc không cho đến khi file maven-metadata-local.xml được xóa [maven-Invoker-plugin liên quan]

[WARNING] The POM for commons-logging:commons-logging:jar:1.1.1 is missing, no dependency information available 
[WARNING] The POM for commons-httpclient:commons-httpclient:jar:3.1 is missing, no dependency information available 
[WARNING] The POM for javax.mail:mail:jar:1.4.4 is missing, no dependency information available 

… và cứ thế, cho đến Tôi xóa các tệp maven-metadata-local.xml tương ứng với các tạo phẩm không thành công (ví dụ: ~/.m2/repository/commons-logging/commons-logging/maven-metadata-local.xml). Sau khi các tệp đó bị xóa, lệnh gọi mvn tiếp theo sẽ tiến hành chính xác; các tệp siêu dữ liệu được khôi phục bằng lời gọi đó (có lẽ là một phần của quá trình kiểm tra kho/gương ngược dòng của tôi cho các tạo phẩm cập nhật) và tôi lại trình bày các lỗi ở trên cho đến khi tôi xóa các tệp siêu dữ liệu.

Điều này ảnh hưởng đến nhiều dự án, mặc dù nó dường như bị giới hạn ở một nhóm phụ thuộc cụ thể. Tôi cho rằng tôi có thể đi hạt nhân và thổi bay repo địa phương của tôi, nhưng tôi muốn hiểu vấn đề là gì.

Suy nghĩ?

Cập nhật: Có vẻ như đó là maven-invoker-plugin (các bản dựng này đang sử dụng cho thử nghiệm tích hợp chung) đang tạo các tệp maven-metadata-local.xml này. Tôi không sử dụng repo cục bộ chỉ thử nghiệm tích hợp as described here, đơn giản là vì làm như vậy làm cho việc tải xuống lại tất cả các phụ thuộc chuyển tiếp (unless you want to maintain an integration-specific settings.xml file!!!). Tôi đã sử dụng plugin invoker với một loạt các dự án khác theo cách này với kết quả tốt - chắc chắn không bao giờ gặp phải một kho lưu trữ cục bộ trong quá trình như thế này.

Cập nhật 2 OK, đây là lặp lại, thậm chí sau khi bắt đầu với một kho lưu trữ hoàn toàn tươi địa phương. Đây là trên OS X, Java 1.6.0_24 với Maven 3.0.3; lưu ý rằng Maven 2.2.1 không NOT trình bày vấn đề này.

Đây là một trong các dự án được đề cập: 1.3.0-compat branch of rummage. Để tái sản xuất:

> mvn clean test 
# no error -- can run this and other builds that don't involve maven-invoker-plugin all day w/o problems 
> mvn clean integration-test 
# FAIL: "Could not resolve dependencies", with warnings as noted above 
> mvn clean test 
# FAIL: "Could not resolve dependencies", with warnings as noted above 

Khi kho lưu trữ cục bộ được borked (bởi thế hệ của maven-metadata-local.xml file, AFAICT), không xây dựng sẽ vượt qua giai đoạn phân giải phụ thuộc.

Chạy mvn -X tiết lộ dòng như thế này cho mỗi vật đó là sau dường như không tìm thấy:

[DEBUG] Verifying availability of /Users/chas/.m2/repository/javax/mail/mail/1.4.4/mail-1.4.4.jar from [] 

Tất nhiên, /Users/chas/.m2/repository/javax/mail/mail/1.4.4/mail-1.4.4.jar et al. hiện có tồn tại, cũng như /Users/chas/.m2/repository/javax/mail/mail/1.4.4/mail-1.4.4.pom. Hoàn toàn bối rối. Tại thời điểm này, tôi giả định đây là một lỗi trong Maven 3 (hoặc một số thư viện cơ bản), bây giờ tôi thấy rằng 2.2.1 là sạch.

Cập nhật 3Bug report filed with Maven project.

Trả lời

5

Sự cố này được giải quyết trong aether 1.12, một rev trên thư viện aether 1.11 đi kèm với Maven 3.0.3. Thay thế aether 1,11 với 1,12 trong kết quả cài đặt Maven của một người trong hành vi mong đợi (as noted in the bug I filed). Đây là hy vọng Maven 3.0.4 được phát hành với aether 1,12 ASAP. :-)

0

bạn không đề cập đến những gì bạn có thể đã thử, vì vậy có thể bạn không thử cái này: thêm tùy chọn -U để bắt buộc cập nhật? (tho có thể tùy chọn -U này chỉ phù hợp với SNAPSHOTs ...)

+1

Có, -U chỉ kiểm tra SNAPSHOTs AFAIK; nói rằng, vâng, tôi đã thử nó, nhưng vô ích. – cemerick

0

Tôi đã nhìn thấy các lỗi tương tự gây ra bởi các tệp bị hỏng trong kho lưu trữ cục bộ của mình. Ví dụ: nếu tải xuống không thành công, hoặc một tệp trong kho lưu trữ từ xa đã thay đổi sau khi tôi tải xuống. Xóa các thư mục bị ảnh hưởng theo số ~/.m2 sửa nó.

+2

Thổi đi kho lưu trữ của tôi không giải quyết được vấn đề; nó có thể lặp lại từ repo cục bộ hoàn toàn sạch sẽ. Các ghi chú được thêm vào mô tả của câu hỏi chính, cùng với một liên kết đến một nhánh của dự án công cộng bị ảnh hưởng. – cemerick

Các vấn đề liên quan