2012-09-20 28 views
44

Thỉnh thoảng maven phàn nàn rằng một phụ thuộc cụ thể, được xây dựng và đóng gói cục bộ, không thể tìm thấy trong kho lưu trữ cục bộ trong khi xây dựng một dự án khác. Chúng tôi nhận được một lỗi như:Maven không tìm thấy vật phẩm địa phương

Không thể thực hiện được mục tiêu của dự án X: Không thể giải quyết phụ thuộc cho dự án X: Thất bại trong việc tìm Y trong [kho archiva] đã được lưu trữ trong kho địa phương, độ phân giải sẽ không được thử lại cho đến khi khoảng thời gian cập nhật nội bộ đã trôi qua hoặc cập nhật buộc phải ->

Trường hợp X là dự án đang được xây dựng và Y được cho là thiếu đồ tạo tác. Nếu bạn nhìn vào kho lưu trữ cục bộ, thì hiện vật có đó. Tạo phẩm này không bao giờ được cài đặt trong kho lưu trữ của chúng tôi, do đó, vấn đề hoàn toàn dựa vào kho lưu trữ cục bộ.

Chúng tôi đã thử các cấu hình khác nhau trong tệp settings.xml và dĩ nhiên là "mvn -U". Không làm tốt, cũng không nên bởi vì tạo tác này không bao giờ đi xa hơn so với kho lưu trữ cục bộ.

Hai thứ duy nhất có vẻ hoạt động là chờ một thời gian rất lâu cho đến khi maven thông minh, hoặc xóa hoàn toàn kho lưu trữ cục bộ. Có lẽ tùy chọn chờ đợi có liên quan đến khoảng thời gian cập nhật nói trên.

Chúng tôi đã gặp phải sự cố này với maven 3.0.2 và 3.0.3. Chúng tôi đang sử dụng Archiva 1.0.3 (nhưng một lần nữa điều này không phải là một yếu tố). Mọi sự trợ giúp sẽ rất được trân trọng.

+1

là Maven đăng nhập bất cứ điều gì trong khi hoặc ngay trước khi "chờ đợi?" I E. là nó cố gắng kết nối với một kho lưu trữ không thể truy cập? Ngoài ra, là hiện vật có vấn đề "-SNAPSHOT"? – noahlz

+0

Maven không ghi lại bất kỳ điều gì khác ngoài lỗi tôi đã đề cập ở trên. Và có, đây là một phụ thuộc snapshot. – user1686620

+0

Xem http://stackoverflow.com/questions/1348603/how-can-i-get-maven-to-stop-attempting-to-check-for-updates-for-artifacts-from-a – noahlz

Trả lời

5

Khi điều này xảy ra với tôi, đó là vì tôi đã sao chép một cách mù quáng tệp settings.xml của mình từ mẫu và nó vẫn có phần tử trống <localRepository/>. Điều này có nghĩa là không có kho lưu trữ cục bộ nào được sử dụng khi giải quyết các phụ thuộc (mặc dù các tạo tác được cài đặt của bạn vẫn được đặt ở vị trí mặc định). Khi tôi thay thế bằng <localRepository>${user.home}\.m2\repository</localRepository>, nó bắt đầu hoạt động.

Đối với * nix, có thể là <localRepository>${user.home}/.m2/repository</localRepository>, tôi cho là vậy.

+4

$ {user.home} \. M2 \ repository là mặc định để xóa thẻ trống sẽ hoạt động như nhau. –

30

Kho lưu trữ Maven cục bộ theo dõi nơi tạo phẩm ban đầu đến từ việc sử dụng tệp có tên "_maven.repositories" trong thư mục tạo tác. Sau khi gỡ bỏ nó, xây dựng đã làm việc. This answer đã khắc phục sự cố cho tôi.

+0

Làm việc cho tôi, cảm ơn! – janhink

+6

Đối với tôi, đó là một tệp có tên "_remote.repositories". Tôi đã xóa nó và nó đã hoạt động! Cảm ơn các thủ thuật! – perbellinio

+0

Thx tệp có tên _remote.repositories cũng có mặt. nó đã xảy ra với tôi khi mối quan hệ của chúng tôi ngừng kết nối mạng để nó không thể có được sự phụ thuộc – cabaji99

5

Maven nhớ khi không tìm thấy thứ gì đó. Điều quan trọng là "độ phân giải sẽ không được lặp lại cho đến khi khoảng thời gian cập nhật nội bộ đã trôi qua hoặc cập nhật buộc phải ->"

Giải pháp nhanh chóng là xóa thư mục con "kho lưu trữ" cục bộ của bạn để tạo thành vấn đề - giả sử bạn đã sửa vấn đề với nó. :)

mvn -U sẽ bắt buộc cập nhật từ kho lưu trữ từ xa - một lần nữa, giả sử bây giờ bạn đã điền từ xa có tạo phẩm được cho biết.

0

Tôi chạy đến vấn đề tương tự khi dự án mới của tôi phụ thuộc vào oracle jdbc jar (mà tôi đã cài đặt trong kho lưu trữ cục bộ của mình và hoạt động tốt cho các dự án khác). Tôi đã thử tùy chọn -U, xóa tập tin .lastupdate hoặc toàn bộ thư mục và downlaod một lần nữa, nhưng nó không hoạt động. cuối cùng, tôi đã xóa thư mục và cài đặt lại nó cục bộ, nó hoạt động.

0

Một trong những lỗi tôi tìm thấy xung quanh Maven là khi tôi đặt tệp settings.xml của mình vào thư mục sai. Nó phải nằm trong thư mục .m2 dưới thư mục nhà người dùng của bạn. Kiểm tra để đảm bảo rằng nó ở đúng nơi (cùng với settings-security.xml nếu bạn đang sử dụng nó).

0

Tôi đã có DependencyResolutionException trong Ubuntu Linux khi tôi đã cài đặt các tạo tác cục bộ thông qua tập lệnh trình bao. Giải pháp là xóa các tạo tác cục bộ và cài đặt lại chúng một cách thủ công - gọi mvn install:install-file qua thiết bị đầu cuối.

-2

Vui lòng thử lệnh này.

mvn Validate

7

Như các tùy chọn ở đây không làm việc cho tôi, tôi chia sẻ cách tôi giải quyết nó:

Tôi dự án của tôi, có một dự án cha mẹ (với pom.xml riêng của mình) có nhiều mô-đun trẻ em, một trong số đó (A) có sự phụ thuộc vào một đứa trẻ khác (B). Khi tôi thử mvn package trong A, nó không hoạt động vì B không thể giải quyết được.

Thực hiện mvn installtrong thư mục chính đã thực hiện công việc. Sau đó, tôi có thể làm mvn package bên trong của A và chỉ sau đó nó có thể tìm thấy B.

+0

wow - đó là *** thực sự xấu *** đối với tôi. Một dự án cha mẹ có các mô-đun rất lớn là * không * phụ thuộc của các mô-đun (nhỏ) tôi cần trên một thiết bị nhúng. Upvoting cho * thông tin * ("không bắn sứ giả" ..) – javadba

+0

CẢM ƠN BẠN! điều này khiến tôi phát điên. mvn clean package jboss-as: triển khai đã hoạt động khi tôi thực hiện trên một dòng, nhưng không phải khi tôi đã làm chúng một cách riêng biệt. – PMorganCA

3

Ngay cả ở chế độ ngoại tuyến, maven sẽ kiểm tra kho từ xa nếu có dấu _remote.repositories cho phụ thuộc. Nếu bạn cần hoạt động ở chế độ ngoại tuyến, bạn có thể cần xóa các tệp này.

Dưới đây tôi có một lệnh shell đơn giản để xóa các tệp đánh dấu này. Điều này là an toàn nếu bạn chỉ sử dụng chế độ ngoại tuyến cho máy. Tôi sẽ KHÔNG làm điều này trên máy cần kéo tệp xuống từ web.

Tôi đã sử dụng chiến lược này trên máy chủ xây dựng bị ngắt kết nối khỏi web. Chúng ta phải chuyển kho lưu trữ vào nó, xóa các tập tin đánh dấu và sau đó chạy trong chế độ offline.

Trên Linux/Unix bạn có thể xóa từ xa các file đánh dấu kho theo cách này:

cd ~/.m2 
find -name "_remote.repositories" type -f -delete