Tôi chưa quen với Maven, tôi có một dự án web dựa trên Java với maven được cấu hình trong MyEclipse của tôi.
Bây giờ nếu tôi sửa đổi bất kỳ tập tin java sau đó làm tôi cần phải làm Run as -> Mvn install
hay Mvn package
?
Tôi chưa quen với Maven, tôi có một dự án web dựa trên Java với maven được cấu hình trong MyEclipse của tôi.
Bây giờ nếu tôi sửa đổi bất kỳ tập tin java sau đó làm tôi cần phải làm Run as -> Mvn install
hay Mvn package
?
Câu trả lời:
từ http://maven.apache.org/guides/getting-started/maven-in-five-minutes.html
package
: lấy mã được biên dịch và đóng gói theo định dạng phân phối của nó, chẳng hạn như JAR.
install
: cài đặt gói vào kho lưu trữ cục bộ, để sử dụng làm phụ thuộc trong các dự án khác cục bộ
Vì vậy, câu trả lời cho câu hỏi của bạn là, nó phụ thuộc vào việc bạn có muốn cài đặt nó vào repo cục bộ của bạn hay không. Cài đặt cũng sẽ chạy gói vì nó cao hơn trong ngăn xếp pha mục tiêu.
deploy
. Nếu bạn thay thế nó package
, nó sẽ không được triển khai cho Nexus.
mvn install
là tùy chọn thường được sử dụng nhất.
mvn package
hiếm khi được sử dụng, chỉ khi bạn gỡ lỗi một số vấn đề với quy trình xây dựng maven.
Xem: http://maven.apache.org/guides/int sinhtion / inttiontion-to-the-lifecycle.html
Lưu ý rằng mvn package
sẽ chỉ tạo một tệp jar.
mvn install
sẽ làm điều đó và cài đặt các tệp jar (và lớp, v.v.) ở những vị trí thích hợp nếu mã khác phụ thuộc vào các tệp đó.
Tôi thường làm một mvn clean install
; điều này xóa target
thư mục và tạo lại tất cả các lọ trong vị trí đó.
Việc dọn dẹp giúp với những thứ không cần thiết hoặc bị loại bỏ đôi khi có thể cản trở.
Thay vào đó sau đó gỡ lỗi (một số thời gian) chỉ cần bắt đầu mới mọi lúc.
Từ tham chiếu Vòng đời , cài đặt sẽ chạy thử nghiệm tích hợp của dự án, gói sẽ không.
Nếu bạn thực sự cần không cài đặt các tạo phẩm được tạo, hãy sử dụng ít nhất là xác minh .
Ngoài ra, bạn cần lưu ý rằng nếu dự án của bạn bao gồm một số mô-đun phụ thuộc lẫn nhau, bạn nên sử dụng "cài đặt" thay vì "gói", nếu không, bản dựng của bạn sẽ thất bại, vì khi bạn sử dụng lệnh cài đặt, mô-đun A sẽ được đóng gói và được triển khai vào kho lưu trữ cục bộ và sau đó nếu mô-đun B cần mô-đun A làm phụ thuộc, nó có thể truy cập nó từ kho lưu trữ cục bộ.
Nếu bạn không sử dụng kho lưu trữ từ xa (như artifactory), hãy sử dụng đơn giản cũ:
mvn clean install
Chủ đề khá cũ nhưng AFAIK, nếu bạn chạy kho lưu trữ của riêng bạn (ví dụ: với artifactory) để chia sẻ jar giữa các nhóm của bạn, bạn có thể muốn sử dụng
mvn clean deploy
thay thế.
Bằng cách này, máy chủ tích hợp liên tục của bạn có thể chắc chắn rằng tất cả các phụ thuộc được đẩy chính xác vào kho lưu trữ từ xa của bạn. Nếu bạn bỏ lỡ một cái, mvn sẽ không thể tìm thấy nó vào kho lưu trữ m2 cục bộ CI của bạn.
gói - lấy mã được biên dịch và đóng gói theo định dạng phân phối của nó, chẳng hạn như tệp JAR hoặc WAR. 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ộ
Cách thích hợp là mvn package
nếu bạn đã làm mọi thứ một cách chính xác cho phần cốt lõi của bản dựng thì không cần phải cài đặt các gói của bạn trong kho lưu trữ cục bộ.
Ngoài ra, nếu bạn sử dụng Travis, bạn có thể "lưu trữ" các phụ thuộc của mình vì nó sẽ không chạm vào bạn $HOME.m2/repository
nếu bạn sử dụng gói cho dự án của riêng bạn.
Trong thực tế nếu bạn thậm chí cố gắng làm một mvn site
bạn thường cần phải làm một mvn install
trước. Có quá nhiều lỗi với một site
hoặc nhiều plugin được bảo trì kém.
Nó phụ thuộc vào những gì bạn đang cố gắng đạt được sau khi thay đổi tệp Java. Cho đến khi bạn muốn kiểm tra quá trình maven, bạn không bao giờ cần phải làm gì cả. Eclipse / MyEclipse sẽ xây dựng những gì cần thiết và đặt đầu ra ở vị trí thích hợp trong dự án của bạn. Bạn cũng có thể chạy hoặc triển khai nó (ví dụ, nếu đó là một dự án web), mà bạn không cần phải làm bất cứ điều gì rõ ràng với maven. Cuối cùng, để cài đặt dự án của bạn trong kho lưu trữ maven, bạn sẽ cần thực hiện cài đặt maven. Bạn cũng có thể có các mục tiêu maven khác mà bạn muốn thực hiện, mà MyEclipse sẽ không tự động thực hiện.
Như tôi nói, nó phụ thuộc vào những gì bạn muốn làm.