2011-08-19 14 views
6

Tôi đã có một dự án Maven2 với hai submodules, đặt ra như thế này:Thêm một applet trong một submodule vào một tập tin WAR trong Maven

parentproject 
|---war-file-project 
|---applet-project 

Các POMs trong mỗi trong số họ có phụ huynh-mô-đun thích hợp các mối quan hệ. applet-project chứa một applet đơn giản và được thiết lập với bao bì JAR. war-file-project chứa một dự án tệp WAR đơn giản và được thiết lập với bao bì WAR.

Khi tôi tạo, tôi muốn đảm bảo rằng tệp WAR chứa tệp JAR kết quả từ applet-project trong thư mục /applets.

Làm cách nào để thực hiện việc này?

Trả lời

7

Để đạt được điều đó, bạn có thể chỉ cần sử dụng plugin phụ thuộc maven để sao chép phụ thuộc vào vị trí thích hợp.

Đã tạo complete example mà bạn có thể sử dụng làm mẫu.

0

Bạn phải xác định phụ thuộc trong dự án chiến tranh với dự án applet của mình.

<dependency> 
    <groupId>${project.groupId}</groupId> 
    <artifactId>applet-project</artifactId> 
    <version>${project.version}</version> 
</dependency> 
+0

Điều đó sẽ xuất hiện để đặt tệp JAR cho applet của tôi trong WEB-INF/lib, đó không phải là những gì tôi muốn. Tôi muốn nó trong thư mục gốc của tệp tin WAR để nó có thể được tải xuống bởi người dùng và chạy trong trình duyệt của anh ta. – Jonathan

2

Cảm ơn khmarbaise vì một mẫu tuyệt vời!

Tôi cũng đã tìm thấy người ta có thể muốn điều chỉnh nó với những thay đổi sau:

  • thêm <scope>provided</scope> đến sự phụ thuộc 'bổ sung' trong chiến tranh/pom.xml - sau đó supplemental.jar sẽ không được lặp lại ở/WEB-INF/lib
  • thêm <stripVersion>true</stripVersion> để cấu hình ví dụ maven-phụ thuộc-plugin - sau đó applet sẽ được trong 'supplemental.jar' thay vì một cái gì đó như 'supplemenal-0.1.0-SNAPSHOT.jar'
  • thay đổi ${project.artifactId}-${project.version} trong <outputDirectory> để đáng tin cậy hơn ${project.build.finalName}