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 đã ;-))
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
Có tệp _maven.repositories trong thư mục của tệp phần mềm (.m2/repository/com/liferay/...) không? – Behe