2010-10-08 37 views
5

Tôi đang phát triển một dự án Java dựa trên Servlet để được đóng gói như một cuộc chiến tranh bằng Maven. Có cách nào tôi có thể bao gồm các tệp JavaScript (JS) cùng với dự án này không (chúng có sẵn ở một số url khi dự án tải trên Máy chủ Tomcat).Bao bì các tệp Javascript trong một cuộc chiến tranh?

Tôi đã xem xét nhưng không tìm thấy bất kỳ giải pháp làm việc nào.

+0

này là một câu hỏi tương tự. http://stackoverflow.com/questions/8397357/copy-a-file-during-maven-build-phase –

Trả lời

12

Có thể giải pháp tốt hơn là tuân theo quy ước Maven, quy định rằng thư mục gốc của ứng dụng web của bạn là src/main/webapp.

Vì vậy, nếu bạn đặt tất cả các tệp Javascript của mình vào src/main/webapp/javascript (hoặc src/main/webapp/js), chúng sẽ được tích hợp trong gói chiến tranh cuối cùng của bạn.

Trong plugin Maven WAR, chúng cung cấp một số mô tả (xem here ví dụ) về nội dung của các thư mục. Ví dụ:

|-- pom.xml 
`-- src 
    `-- main 
     |-- java 
     | `-- com 
     |  `-- example 
     |   `-- projects 
     |    `-- SampleAction.java 
     |-- resources 
     | `-- images 
     |  `-- sampleimage.jpg 
     `-- webapp 
      |-- WEB-INF 
      | `-- web.xml 
      |-- index.jsp 
      `-- jsp 
       `-- websource.jsp 

Như bạn thấy, bạn có thể đặt các nguồn lực trong webapp/xxx thư mục, chẳng hạn như jsp tập tin ở đây.

Như đã nêu trong cuh, bạn cũng có thể định cấu hình plugin Maven WAR nếu cấu trúc thư mục của bạn khác.

+0

Bạn nói đúng, ví dụ-config của tôi bằng cách nào đó trộn lẫn bên ngoài với việc thêm tài nguyên ngầm. Mọi thứ trong 'src/main/resources' được thêm vào mặc định vào thư mục' WEB-INF/classes'. Vì vậy, nó sẽ được thêm hai lần vào 'chiến tranh'. btw quy ước maven là 'src/main/webapp' không phải là webapps. – cuh

+0

@cuh Đã sửa. – romaintaz

3

Bạn có thể sử dụng maven-war-plugin và cấu hình nó một cái gì đó như thế này:

<plugin> 
     <groupId>org.apache.maven.plugins</groupId> 
     <artifactId>maven-war-plugin</artifactId> 
     <version>2.0.2</version> 
     <configuration> 
      <warSourceDirectory>${basedir}/src/main/webapp</warSourceDirectory> 
      <webResources> 
       <resource> 
        <directory>your/path/to/js</directory> 
        <targetPath>js</targetPath> 
       </resource> 
      </webResources> 
     </configuration> 
</plugin> 

Xem here.

chỉnh sửa: Có thể bạn không muốn bao gồm js vào thư mục classes.

1

Đặt chúng vào thư mục trong src/main/webapp. Tức là, giả sử bạn tạo ra nó bằng cách sử dụng nguyên mẫu maven-archetype-webapp.

ứng dụng hiện tại của tôi có chúng dưới src/main/webapp/javascript, và truy cập chúng trong JSP như thế này:

<script type="text/javascript" src="javascript/jquery-1.4.2.min.js"></script> 

(cho các tập tin jsp trong src/main/webapp đó là)

Các vấn đề liên quan