2013-05-31 17 views
18

tôi dường như không thể chạy mvn -o package vì nó than phiền vớimaven không thể tìm thấy hiện vật địa phương của tôi

Hệ thống kho là off line nhưng artifact com.liferay.portal: util-cầu: jar : 6.1.20 không có sẵn trong kho lưu trữ địa phương .

Nhưng tôi đã kiểm tra kho lưu trữ cục bộ của mình và tạo tác đó tồn tại ở đó. Tôi cũng đã thử các giải pháp của thiết lập updatePolicy để không bao giờ trong tập tin settings.xml nhưng điều đó không làm việc.

+1

Tệp settings.xml của bạn có trỏ tới kho lưu trữ mà bạn đang kiểm tra không? – Adarsh

+3

Có tệp _maven.repositories trong thư mục của tệp phần mềm (.m2/repository/com/liferay/...) không? – Behe

Trả lời

39

Trước Maven 3.0.x, Maven không theo dõi nguồn gốc của tệp trong kho lưu trữ cục bộ. Điều này có thể dẫn đến các vấn đề về xây dựng, đặc biệt nếu bạn xây dựng một cái gì đó đã liệt kê kho chứa java.net2 (bây giờ đã chết) rất borked ... Không chỉ thay đổi kho lưu trữ phát hành (thực hành cực kỳ xấu và ác) cũng đã xuất bản các hiện vật ở cùng tọa độ như các hiện vật trên trung tâm nhưng với nội dung khác nhau (không thể tin được là ác)

Vì vậy, bạn có thể có công việc xây dựng (vì bạn có commons-io: commons-io: 2.0 từ trung tâm) và xây dựng không thành công (bởi vì bây giờ bạn nhận được commons-io: commons-io: 2.0 từ java.net2 là một tạo phẩm hoàn toàn khác với các phụ thuộc khác nhau trong pom) hoặc ngược lại.

Tình huống trên là một trong các trình điều khiển để sử dụng trình quản lý kho lưu trữ maven, vì điều đó cho phép bạn kiểm soát tập hợp con của kho lưu trữ mà bạn phơi bày hạ lưu và thứ tự các tạo phẩm được giải quyết từ nhiều kho lưu trữ (thường được gọi là quy tắc định tuyến)

Trong bất kỳ trường hợp nào, khi maven chuyển sang Aether làm lớp truy cập kho lưu trữ, quyết định được thực hiện để bắt đầu theo dõi các tạo phẩm đến từ đâu.

Vì vậy, với Maven 3.0.x, khi một tạo phẩm được tải xuống từ một kho lưu trữ, maven để lại tệp _maven.repositories để ghi lại nơi tệp được giải quyết. Nếu bạn đang xây dựng một dự án và danh sách các kho lưu trữ hiệu quả không bao gồm vị trí mà đồ tạo tác đã được giải quyết, thì Maven quyết định rằng nó giống như phần tạo tác không có trong bộ nhớ đệm và sẽ tìm cách giải quyết lại phần tạo tác đó. ..

Có một số lỗi trong 3.0.x mặc dù ... Quan trọng nhất là cách offline được xử lý ... Cụ thể: khi ngoại tuyến, maven 3.0.x cho rằng không có kho, vì vậy sẽ luôn tìm thấy không phù hợp với tệp _maven.repositories !!!

Cách giải quyết cho Maven 3.0.x là để xóa các tập tin từ bộ nhớ cache địa phương của bạn, ví dụ:

$ find ~/.m2/repository -name _maven.repositories -exec rm -v {} \; 

Các tác dụng phụ là bạn mất sự bảo vệ mà Maven 3.0.x đang cố gắng cung cấp.

Các tin tốt là Maven 3.1 sẽ có sửa chữa cần thiết (nếu chúng ta bao giờ có thể nhận được hành động của chúng tôi lại với nhau và nhận được một thông cáo ra khỏi cửa)

Với Maven 3.1 khi ở chế độ ngoại tuyến, tệp _maven.repositories bị bán (bỏ qua) và cũng có tùy chọn bỏ qua tệp đó cho các bản dựng trực tuyến (được gọi là chế độ cũ)

Tại thời điểm này (ngày 1 tháng 6 năm 2013) 4 cố gắng để cắt giảm một bản phát hành đáp ứng các yêu cầu pháp lý và thử nghiệm đang trong tiến trình ... Vì vậy, giả sử rằng lần thứ 4 là may mắn, tôi sẽ hy vọng để xem 3.1.0-alpha-1 phát hành trong 3-4 ngày thời gian ... Nhưng có thể lâu hơn là chúng tôi muốn cung cấp các thay đổi trong 3.1 đủ thời gian để đảm bảo sử dụng các bản dựng không phá vỡ (có một thay đổi trong một API được phơi bày (do tai nạn-ish - API là cần thiết bởi plugin trang web và phụ thuộc) mà tác giả plugin đã phụ thuộc vào (mặc dù họ không nên có) để có tiềm năng, mặc dù chúng tôi nghĩ rằng chúng tôi có tất cả các cơ sở được bảo hiểm)

Hy vọng rằng sẽ trả lời câu hỏi của bạn (và có thể một vài chi tiết bạn không biết bạn đã ;-))

+0

Cảm ơn rất nhiều thats cố định nó. Tôi đã kiểm tra nội dung của các tệp _maven.repositories này và nó có một số tham chiếu tới máy chủ nexus đang được sử dụng tại máy trạm của tôi tại văn phòng. Tôi đã sao chép các đồ tạo tác từ máy tính .m2 trên máy tính xách tay của tôi để có thể giải thích tại sao nó không thể giải quyết được máy chủ đó. Anyways nghĩ rằng đây có thể là một điều phổ biến mọi người làm tức là sao chép kho địa phương trên máy. –

+1

Tôi vẫn gặp sự cố này với 3.3.9 trên Ubuntu 16.04. Có ai khác có thể xác nhận không? Đây có phải là hồi quy không? – Budric

+0

Tôi cũng vậy trên Ubuntu 16.04 với 3.3.9 và không có câu trả lời được đề xuất nào đang hoạt động. – mmaceachran

14

Tôi cũng đã phải gỡ bỏ _remote.repositories trong cùng một cách như _maven.repositories mô tả ở trên. Tôi đang sử dụng Maven 3.1.1

find ~/.m2/repository -name _remote.repositories -exec rm -v {} \; 
+0

Điều này đã giúp tôi rất nhiều. Tôi có Maven 3.2.5 và vẫn còn vấn đề này tồn tại. – Eregrith

0

Tôi gặp sự cố này khi tôi đang sử dụng apache-maven-3.0.4, sự cố đã được chuyển ngay sau khi tôi chuyển sang apache-maven-3.3.1.

+1

Không thể xác nhận rằng đối với maven 3.3.9. Tôi phải xóa tất cả các lần xuất hiện của _remote.repositories và _maven.repositories. Vấn đề này đã khiến tôi phát điên khi xử lý các vấn đề về proxy của công ty và các kho lưu trữ được quản lý của công ty, kết hợp. –

0

Tôi gặp sự cố này 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.

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