Gói mvn sạch của mv và mv sạch cài đặt khác nhau như thế nào?


277

Chính xác thì sự khác biệt giữa mvn clean packagevà là mvn clean installgì? Khi tôi chạy cả hai lệnh này, cả hai dường như làm cùng một việc.



3
Một gói (xây dựng mục tiêu) và cài đặt (gói và đặt nó trong kho lưu trữ của bạn) Bạn cần thực hiện sau nếu bạn muốn sử dụng phiên bản này trong mô-đun khác.
Peter Lawrey

3
Có lẽ điều này nên được mở lại? Hoàn toàn có thể trả lời và tôi không cảm thấy khó trả lời. Ngoài ra, nếu ai đó hoàn toàn mới với maven, thật dễ dàng để thấy hai giai đoạn xuất hiện để làm điều tương tự. Tôi sẽ chỉnh sửa nó trong một nỗ lực để làm cho nó ít mơ hồ hơn.
Daniel Kaplan

Câu trả lời:


371

Vâng, cả hai sẽ làm sạch. Điều đó có nghĩa là họ sẽ xóa thư mục đích. Câu hỏi thực sự là sự khác biệt giữa gói và cài đặt là gì?

packagesẽ biên dịch mã của bạn và cũng đóng gói nó. Ví dụ, nếu pom của bạn nói rằng dự án là một jar, nó sẽ tạo một jar cho bạn khi bạn đóng gói và đặt nó ở đâu đó trong thư mục đích (theo mặc định).

installsẽ biên dịch và gói, nhưng nó cũng sẽ đặt gói vào kho lưu trữ cục bộ của bạn. Điều này sẽ làm cho nó để các dự án khác có thể tham khảo nó và lấy nó từ kho lưu trữ cục bộ của bạn.

Tài liệu


Tại sao mvn cài đặt nhanh hơn gói mvn?
lostintranslation

9
@SharadHolani vì bản dựng tăng dần. mvn clean installkhông nhanh hơn mvn package.
OrangeDog

Đối với dự án của tôi, gói mvn: đơn lẻ để xây dựng jar chất béo mất nhiều thời gian hơn so với cài đặt mvn. Làm gói và cài đặt cả hai xây dựng lọ chất béo tương đương?
lostintranslation

1
@RakeshYadav đúng vậy
Daniel Kaplan

116

Những gì sạch sẽ (phổ biến trong cả hai lệnh) - loại bỏ tất cả các tệp được tạo bởi bản dựng trước


Đến với sự khác biệt giữa gói lệnh và cài đặt , trước tiên bạn cần hiểu vòng đời của một dự án maven


Đây là các giai đoạn vòng đời mặc định trong maven

  • xác nhận - xác nhận dự án là chính xác và tất cả các thông tin cần thiết có sẵn
  • biên dịch - biên dịch mã nguồn của dự án
  • kiểm tra - kiểm tra mã nguồn đã biên dịch bằng khung kiểm thử đơn vị phù hợp. Các thử nghiệm này không yêu cầu mã được đóng gói hoặc triển khai
  • gói - lấy mã được biên dịch và gói nó ở định dạng phân phối của nó, chẳng hạn như JAR.
  • xác minh - chạy mọi kiểm tra về kết quả kiểm tra tích hợp để đảm bảo đáp ứng các tiêu chí chất lượng
  • cài đặt - cài đặt gói vào kho lưu trữ cục bộ, để sử dụng như một 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 xây dựng, 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ách thức hoạt động của Maven là, nếu bạn chạy một lệnh cho bất kỳ giai đoạn vòng đời nào, nó sẽ thực hiện từng giai đoạn vòng đời mặc định theo thứ tự, trước khi thực hiện chính lệnh đó.

thứ tự thực hiện

xác thực >> biên dịch >> kiểm tra (tùy chọn) >> gói >> xác minh >> cài đặt >> triển khai

Vì vậy, khi bạn chạy gói mvn lệnh , nó sẽ chạy các lệnh cho tất cả các giai đoạn trong vòng đời cho đến khi gói

xác thực >> biên dịch >> kiểm tra (tùy chọn) >> gói

Và đối với cài đặt mvn , nó chạy các lệnh cho tất cả các giai đoạn trong vòng đời cho đến khi cài đặt, bao gồm cả gói

xác thực >> biên dịch >> kiểm tra (tùy chọn) >> gói >> xác minh >> cài đặt


Vì vậy, hiệu quả của nó là gì, cài đặt các lệnh thực hiện mọi thứ mà lệnh gói thực hiện và một số thứ khác (cài đặt gói vào kho lưu trữ cục bộ, để sử dụng như một phụ thuộc trong các dự án khác cục bộ)

Nguồn: Tài liệu tham khảo vòng đời Maven


1
Điều này nên được đánh dấu là câu trả lời được chấp nhận. Điều này xác định rõ ràng và giúp OP hiểu được các giai đoạn khác nhau của vòng đời maven là gì và tại sao cài đặt mvn bao gồm gói mvn nhưng không phải là cách khác.
Jasmeet Singh

1
Maven trong một tóm tắt, tuyệt vời!
CodeSlave

19

gói sẽ tạo Jar / war theo tệp POM. cài đặt sẽ cài đặt tệp jar được tạo vào kho lưu trữ cục bộ cho các phụ thuộc khác nếu có.

giai đoạn cài đặt đến sau giai đoạn gói


bao bì đầu tiên sẽ xảy ra sau đó các gói (jar / war) sẽ cài đặt.
Abdul Gafoor

1
"Giai đoạn cài đặt theo giai đoạn gói". Cách nó hiện đang diễn ra là ngược. "Theo sau" có nghĩa là "sau".
Charles Wood

11

Gói & cài đặt là các giai đoạn khác nhau trong vòng đời xây dựng maven. giai đoạn gói sẽ thực hiện tất cả các giai đoạn trước đó & nó sẽ dừng lại với việc đóng gói dự án dưới dạng bình. Giai đoạn cài đặt tương tự sẽ thực hiện tất cả các giai đoạn trước và cuối cùng là cài đặt dự án cục bộ cho các dự án phụ thuộc khác.

Để hiểu về vòng đời xây dựng của maven, vui lòng truy cập liên kết sau https://ayolajayamaha.blogspot.in/2014/05/difference-b between-mvn -clean-install.html


1
Ý bạn là gì khi "& cuối cùng cài đặt dự án cục bộ cho các dự án phụ thuộc khác"
Arun Gowda

2
@ArunGowda có nghĩa là trong .m2 được tạo trong hệ thống của bạn khi cài đặt maven sẽ được thêm vào với các dự án bạn đang đóng gói và sẽ có sẵn cho các dự án khác dưới dạng phụ thuộc.
JAVA

một bức tranh là 1000 từ, bất cứ ai cũng có một sơ đồ?

@MrCholo mvn cài đặt sẽ đưa jar / war vào repo maven của bạn. Nơi lưu trữ tất cả các phụ thuộc maven của bạn, thường là ~ /
.m2

6

packagesẽ thêm gói jarhoặc warvào targetthư mục của bạn , Chúng tôi có thể kiểm tra nó khi nào, chúng tôi làm trống thư mục đích (sử dụng mvn clean) và sau đó chạy mvn package.
installsẽ làm tất cả những việc đó package, ngoài ra nó sẽ thêm gói jarhoặc wartrong kho lưu trữ cục bộ. Chúng tôi có thể xác nhận nó bằng cách kiểm tra trong .m2thư mục của bạn .

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.