EDIT: Tôi đã hoàn toàn chỉnh sửa câu trả lời đầu tiên của mình ngay bây giờ để hiểu rõ hơn về những kỳ vọng của OP.
Kiểm tra Cargo, một trình bao bọc mỏng cho phép bạn thao tác các vùng chứa Java EE theo cách tiêu chuẩn.
Thực tế, có tutorial trên trang web của Cargo thể hiện cách sử dụng plugin Cargo Maven2 để tự động khởi động/dừng vùng chứa (có thể triển khai một số triển khai cho nó khi khởi động), đó là những gì bạn đang tìm kiếm những gì tôi đã hiểu.
Tôi không chắc chắn rằng việc thực hiện điều này từ thư mục chính là khả thi và nếu đó là yêu cầu hoặc nếu bạn có thể làm điều đó từ thư mục khác. Tôi sẽ quay lại sau. Cho phép đầu tiên hãy xem thiết lập plugin Cargo Maven2.
Trong trường hợp của bạn, bạn có thể bắt đầu với cấu hình tối thiểu (có sử dụng Jetty 5.x đó là thùng chứa mặc định của Cargo):
[...]
<build>
<plugins>
<plugin>
<groupId>org.codehaus.cargo</groupId>
<artifactId>cargo-maven2-plugin</artifactId>
</plugin>
</plugins>
</build>
[...]
Nếu bạn muốn sử dụng Jetty 6.x, bạn sẽ phải chỉ định <containerId>
và <type>
trong các yếu tố <container>
:
[...]
<plugin>
<groupId>org.codehaus.cargo</groupId>
<artifactId>cargo-maven2-plugin</artifactId>
<configuration>
<container>
<containerId>jetty6x</containerId>
<type>embedded</type>
</container>
</configuration>
</plugin>
[...]
Sau đó, thêm các module bạn muốn triển khai bằng cách định nghĩa deployables rõ ràng bên trong cấu hình plugin (tham khảo các Maven2 Plugin Reference Guide cho các chi tiết của cấu hình):
<deployables>
<deployable>
<groupId>com.mycompany.myproject</groupId>
<artifactId>myproject-alpha</artifactId>
<type>war</type>
<properties>
<context>optional alpha root context</context>
</properties>
</deployable>
<deployable>
<groupId>com.mycompany.myproject</groupId>
<artifactId>myproject-beta</artifactId>
<type>war</type>
<properties>
<context>optional beta root context</context>
</properties>
</deployable>
[...]
</deployables>
với điều này, bạn sẽ có thể bắt đầu Jetty và có webapps của bạn triển khai trên nó với một đơn giản (để chạy từ các dự án có chứa các cấu hình hàng hóa plugin):
$ mvn cargo:start
Tôi không chắc chắn rằng điều này có thể hoạt động với pom mẹ (tôi tự hỏi điều này có thể dẫn đến các vấn đề phụ thuộc theo chu kỳ) hay không. Nhưng cá nhân, tôi sẽ đặt tất cả những thứ này vào trong một dự án chuyên dụng, ví dụ: trong một dự án anh chị em của các ứng dụng web của bạn, chứ không phải trong pom cha mẹ. Tôi không nghĩ rằng nó thực sự là một vấn đề lớn và đây là IMHO một thiết lập tốt hơn, đặc biệt là nếu bạn định sử dụng hàng hóa cho integration testing.
Tôi hiểu rõ hơn những gì bạn muốn làm và đã chỉnh sửa câu trả lời đầu tiên của tôi –
Câu hỏi giống như [Có thể chạy hai ứng dụng web cùng một lúc khi phát triển với Maven/Eclipse?] (Http://stackoverflow.com/questions/5519066/ có thể chạy-hai-webapps-at-once-khi-phát triển-với-maven-eclipse). Câu hỏi này có câu trả lời hay! (Từ @Janning) – stolsvik