Sự khác biệt giữa “mvn deploy” với local repo và “mvn install” là gì?


95

Nhóm của tôi sử dụng repo maven nhóm nội bộ được chia sẻ từ máy chủ phát triển 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. Các bản dựng Maven trong Continuum được chạy với mục tiêu "cài đặt", sao chép trực tiếp phần tạo tác cuối cùng vào thư mục được chia sẻ.

Câu hỏi đặt ra là, sự khác biệt giữa việc thêm tệp vào repo dùng chung mvn installvà sử dụng mục tiêu triển khai (mvn-deploy plugin) là gì?

Đối với tôi, có vẻ như việc sử dụng mvn deploytạo thêm sự phức tạp về cấu hình, nhưng tôi đã đọc ở đâu đó rằng việc cài đặt các tệp vào một 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 deployinstall; Tôi thực sự quan tâm hơn đến các chi tiết cấp thấp về những tệp nào được tạo trong repo maven.

Câu trả lời:


166

Ken, câu hỏi hay. Tôi nên nói rõ hơn trong Hướng dẫn cuối cùng 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. "install" đề cập đến quá trình cài đặt một tạo tác trong kho lưu trữ cục bộ của bạn. "Triển khai" đề cập đến quá trình triển khai một tạo tác đến một kho lưu trữ từ xa.

Thí dụ:

  1. Khi tôi chạy một dự án nhiều mô-đun lớn trên máy của mình, tôi thường chạy "mvn install". Điều này sẽ cài đặt tất cả các tạo tác phần mềm nhị phân được tạo (thường là 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 thời điểm triển khai ảnh chụp nhanh hoặc bản phát hành, tôi sẽ chạy "mvn deploy". Chạy điều 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ẽ triển khai cho một trình quản lý kho lưu trữ chẳng hạn như Nexus

Đúng là việc chạy "triển khai" sẽ yêu cầu một số cấu hình bổ sung, bạn sẽ phải cung cấp phần phân phối Quản lý trong POM của mình.


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

4
Triển khai được thiết kế để triển khai tạo tác đến 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.
Tim O'Brien

17

Từ các tài liệu Maven , âm thanh giống 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 lưu trữ cục bộ, để sử dụng như một phần phụ thuộc trong các dự án khác cục bộ
  • 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" vào máy chủ CI cài đặt nó vào kho lưu trữ cục bộ của nó, mà sau đó bạn với tư cách là người dùng đang chia sẻ?


4

"matt b" có quyền, nhưng cụ thể là, mục tiêu "cài đặt" sao chép mục tiêu đã 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 dành 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 hoàn thành 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 để làm cho việc quản lý triển khai dễ dàng hơn vì repo cục bộ của CI là 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".

Khi sử dụng trang web của chúng tôi, bạn xác nhận rằng bạn đã đọc và hiểu Chính sách cookieChính sách bảo mật của chúng tôi.
Licensed under cc by-sa 3.0 with attribution required.