2008-10-16 38 views
80

Nhóm của tôi sử dụng một repo maven nhóm nội bộ được chia sẻ từ một máy chủ phát triển bằng cách sử dụng Apache. Chúng tôi cũng chạy máy chủ Continuum CI trên cùng một máy. Xây dựng Maven trong Continuum được chạy với mục tiêu "cài đặt", bản sao này tạo bản sao cuối cùng trực tiếp vào thư mục được chia sẻ.Sự khác nhau giữa "triển khai mvn" với repo cục bộ và "mvn install" là gì?

Câu hỏi đặt ra là sự khác biệt giữa việc thêm tệp vào repo được chia sẻ bằng cách sử dụng cài đặt mvn và sử dụng mục tiêu triển khai (plugin mvn-deploy) là gì? Có vẻ như với tôi rằng việc sử dụng triển khai mvn tạo phức tạp thêm về cấu hình, nhưng tôi đã đọc ở đâu đó rằng việc cài đặt tệp vào repo được chia sẻ là một ý tưởng tồi vì một số lý do liên quan đến hoạt động bên trong của maven.

cập nhật: Tôi nhận được sự khác biệt về chức năng giữa triển khai và cài đặt; Tôi thực sự quan tâm nhiều hơn đến các chi tiết cấp thấp về những tập tin được tạo trong repo maven.

Trả lời

144

Ken, câu hỏi hay. Tôi phải rõ ràng hơn trong số The Definitive Guide về sự khác biệt. "cài đặt" và "triển khai" phục vụ hai mục đích khác nhau trong một bản dựng. "cài đặt" đề cập đến quá trình cài đặt một tạo phẩm trong kho lưu trữ cục bộ của bạn. "deploy" đề cập đến quá trình triển khai một tạo phẩm đến một kho lưu trữ từ xa.

Ví dụ:

  1. Khi tôi chạy một dự án đa mô-đun lớn trên máy tính của tôi, tôi sẽ thường chạy "mvn cài đặt". Điều này sẽ cài đặt tất cả các tạo phẩm phần mềm nhị phân được tạo ra (thường là các JAR) trong kho lưu trữ cục bộ của tôi. Sau đó, khi tôi xây dựng các mô-đun riêng lẻ trong bản dựng, Maven sẽ truy xuất các phụ thuộc từ kho lưu trữ cục bộ.

  2. Khi đến lúc triển khai ảnh chụp nhanh hoặc bản phát hành, tôi sẽ chạy "triển khai mvn". Việc chạy này sẽ cố gắng triển khai các tệp đến một kho lưu trữ hoặc máy chủ từ xa.Thông thường tôi sẽ được triển khai tới một người quản lý kho như Nexus

Đúng là chạy "triển khai" là sẽ yêu cầu thêm một số cấu hình, bạn sẽ phải cung cấp một phần distributionManagement tại của bạn POM.

+0

@Tim vậy chính xác thì lợi thế của 'mvn deploy' là gì? Nó mang lại lợi ích gì cho cấu hình bổ sung được yêu cầu ngay từ đầu? – Geek

+2

Triển khai được thiết kế để triển khai các tạo phẩm cho một máy chủ từ xa. Nó là một trường hợp sử dụng hoàn toàn khác với cài đặt. –

13

From the Maven docs, có vẻ như nó chỉ là một sự khác biệt trong kho bạn cài đặt gói vào:

  • cài đặt - cài đặt gói vào kho địa phương, để sử dụng như một sự phụ thuộc vào các dự án khác tại địa phương
  • triển khai - được thực hiện trong môi trường tích hợp hoặc phát hành, sao chép gói cuối cùng vào kho lưu trữ từ xa để chia sẻ với các nhà phát triển và dự án khác.

Có thể có một số nhầm lẫn trong "cài đặt" đó cho máy chủ CI cài đặt nó vào kho lưu trữ cục bộ, sau đó bạn là người dùng đang chia sẻ?

3

"matt b" có đúng, nhưng để cụ thể, mục tiêu "cài đặt" sao chép mục tiêu được xây dựng của bạn vào kho lưu trữ cục bộ trên hệ thống tệp của bạn; hữu ích cho những thay đổi nhỏ trong các dự án hiện không có nghĩa là cho toàn bộ nhóm.

Mục tiêu "triển khai" tải nó lên kho lưu trữ được chia sẻ của bạn khi công việc của bạn kết thúc và sau đó có thể được chia sẻ bởi những người khác yêu cầu nó cho dự án của họ.

Trong trường hợp của bạn, có vẻ như "cài đặt" được sử dụng để giúp việc quản lý triển khai dễ dàng hơn do repo cục bộ của CI repo được chia sẻ. Nếu CI nằm trên một hộp khác, nó sẽ phải sử dụng mục tiêu "triển khai".

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