2010-11-22 30 views
9

tôi vừa tải xuống một số tạo phẩm maven trực tiếp vào kho lưu trữ cục bộ của tôi (.m2/repository). Bây giờ tôi đã cài đặt Trình quản lý Kho lưu trữ Nexus và cần phải lấp đầy bộ nhớ của nó mà không cần phải tải lại tất cả các tạo phẩm. Có cách nào để cập nhật kho lưu trữ Nexus với kho lưu trữ cục bộ không. Tôi không muốn chỉ đơn giản là sao chép chúng bởi vì các đồ tạo tác riêng biệt của Nexus liên quan đến các máy chủ công cộng của chúng (trung tâm, codehaus, v.v.) và cấu trúc kho lưu trữ cục bộ không.Cập nhật kho lưu trữ Nexus với các đồ tạo tác cục bộ

Cập nhật: Trong khi đó, tôi sao chép các tạo phẩm từ kho lưu trữ cục bộ sang bộ nhớ Nexus (kho lưu trữ công cộng). Tôi có thể duyệt qua các đồ tạo tác thông qua ứng dụng web Nexus, nhưng Maven bằng cách nào đó không thể giải quyết các hiện vật từ Nexus. Tôi có cần đăng ký đặc biệt không? Tôi đã lập chỉ mục lại kho lưu trữ công cộng và khởi động lại Nexus nhiều lần - không thay đổi.

Trả lời

13

Nexus có một số loại kho: tổ chức kho (những người thực sự lưu trữ hiện vật maven), Proxy kho (mà chuyển hướng truy cập kho từ xa khác khi một artifact được yêu cầu), kho ảo (vỏn vẹn adapter của kho lưu trữ maven1 [trong phạm vi của câu hỏi này]). bạn cũng có thể tạo các nhóm kho lưu trữ có thể phân phối các tạo phẩm từ bất kỳ tập hợp nào của nó (kho lưu trữ public là một trong các nhóm này).

Ngoài ra, nexus chia kho lưu trữ của họ theo chính sách xuất bản thành ảnh chụp nhanhbản phát hành. Các cửa hàng trước đây chỉ có hiện vật ảnh chụp nhanh; trong khi sau này, về mặt lý thuyết, có thể lưu trữ cả ảnh chụp nhanh và bản phát hành, nhưng nó thực sự hoạt động lỗi khi repo rất lớn và chứa ảnh chụp nhanh.

Để đăng cai vật của bạn, bạn cần phải:

Đầu tiên: Chia kho địa phương của bạn thành hai: một chứa các bức ảnh chụp, và một người khác có chứa các phiên bản. Nexus công cụ chuyển đổi kho sẽ giúp bạn nếu repo của bạn là rất lớn:

<dependency> 
     <groupId>org.sonatype.nexus.tools</groupId> 
     <artifactId>nexus-repository-conversion-tool</artifactId> 
     <version>1.8.0.1</version> 
     <classifier>cli</classifier> 
    </dependency> 

Khi downlaoded bạn chỉ có thể thực hiện java -jar nexus-repository-conversion-tool-1.8.0.1-cli.jar -rSource -oTarget nơi Source là thư mục có chứa các kho lưu trữ địa phương để chuyển sang mối quan hệ, và Target là một hiện có, trống rỗng và thư mục có thể ghi, nơi công cụ hội tụ sẽ rời khỏi kho lưu trữ được chia nhỏ. Miễn là thư mục nguồn là repository và Mục tiêu là temp, nó sẽ tạo ra các thư mục temp/repository-snapshotstemp/repository-releases.

Thứ hai: chuyển repos được chia nhỏ của bạn thành nexus. Và để chúng trong ${NEXUS_HOME}/sonatype-work/nexus/storage hoặc bất cứ nơi nào cài đặt nexus của bạn được định cấu hình để lưu trữ các kho lưu trữ.

Thứ ba: tạo hai vị trí lưu trữ được lưu trữ với cùng id như repos bạn đã di chuyển ở bước thứ hai. (trong ví dụ repository-snapshotsrepository-releases)

Nếu repo của bạn chỉ chứa bản phát hành, giải pháp của bạn có thể đã hoạt động, nhưng bạn sẽ phạm một sai lầm khác.Mặc dù nexus lưu trữ các tạo phẩm cho mỗi kho lưu trữ, lưu trữ của những người không được lưu trữ repo chỉ dành cho mục đích lưu trữ (như trong trường hợp của kho lưu trữ public), bạn sẽ phải sao chép nội dung của mình vào một lưu trữ để hoạt động.

+0

Bạn cũng phải xem xét loại hiện vật nào bạn đang lưu trữ trong kho lưu trữ của mình. Nexus phân chia các kho lưu trữ thành các bản mở rộng và phát hành tùy thuộc vào thời tiết mà nó lưu trữ các ảnh chụp nhanh hoặc phát hành + ảnh chụp nhanh. Mặc dù nó sho – Miguel

+0

Ồ, tôi đọc câu trả lời của bạn quá muộn. Cách tiếp cận của bạn sẽ giúp tôi tiết kiệm rất nhiều thời gian, tôi đoán vậy. Tôi cũng đã tách các ảnh chụp nhanh và phát hành và sau đó tự di chuyển chúng đến các kho lưu trữ Nexus tương ứng. Tôi bằng cách nào đó đã phải triển khai mỗi tạo phẩm phát hành bằng cách sử dụng cli. Đối với ảnh chụp nhanh, nó đã đủ để tái lập chỉ mục bộ nhớ cache của Nexus. Cảm ơn! – mamuesstack

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