Tôi có một dự án maven đa mô-đun và một trong các mô-đun là để phân phối.Có cách nào tốt để sử dụng maven để chạy một bình thực thi?
Project \
| moduleA \
| moduleB \
| ...
| dist-module \
Phân phối chứa một jar thực thi mà tôi muốn thực hiện dễ dàng. Tuy nhiên, để thực hiện nó, tôi phải gõ một cái gì đó như:
java -jar dist-module/target/dist-module-1.0-SNAPSHOT-full-dist/myJar.jar
Nó sẽ là khá thích hợp hơn để chỉ cần gõ:
mvn exec:java \ OR
mvn exec:exec
Thật không may, tôi không thể tìm thấy một cách để có được mục tiêu java để thực hiện một .jar. Mục tiêu exec sẽ thực sự làm điều đó, nhưng có một catch: jar chứa một máy chủ jetty được nhúng, và do cách exec hoạt động (không sử dụng cùng một JVM như maven), máy chủ không chấm dứt trừ khi tôi giết quá trình theo cách thủ công, điều tương tự khó chịu.
Bất kỳ đề xuất nào về cách thực hiện việc này bằng cách sử dụng maven?
Chỉnh sửa:
Để làm rõ, lệnh này chủ yếu sẽ được sử dụng để thử nghiệm khói thủ công đơn giản; để đọc đầu ra nhật ký và đảm bảo chương trình khởi động đúng cách trong môi trường phân phối của nó. Như vậy, nó có thể là một cuộc gọi chặn với ctrl-c chấm dứt cả máy chủ và maven.
Máy chủ nhúng chuyên chạy một số ứng dụng cụ thể và không tự động tải lại chúng. Vì vậy, không có nhu cầu lớn để giữ cho máy chủ hoạt động độc lập với maven trong một thời gian dài.
Nhiệm vụ của cầu tàu là gì? – Nachtgold
Bạn có thể đính kèm pom với exec có vấn đề: java định nghĩa mục tiêu? –
Không có cách nào tốt, bởi vì maven là một công cụ xây dựng và triển khai. Nếu bình của bạn là một phần của quá trình xây dựng, hãy viết một plugin maven cho nó. Nếu bạn chỉ muốn sử dụng maven để chạy ứng dụng của bạn, có lẽ tốt hơn là nghĩ về một thứ khác. – kan