2011-09-08 42 views
6

Tôi có một dự án web Maven và tôi có một số tệp CSS và Javascript trong thư mục src \ main \ webapp \. Tôi liên tục thực hiện các thay đổi đối với những tệp đó và muốn thấy các thay đổi của tôi một cách nhanh chóng. Nếu tôi chạy maven cài đặt, phải mất độ tuổi do phụ thuộc của dự án. Đôi khi tất cả những gì tôi muốn thay đổi là một dòng mã trong tệp CSS của tôi và không muốn biên dịch lại mọi thứ khác. Tôi có một plugin maven xuất bản tập tin chiến tranh đầu ra của tôi vào thể hiện JBoss của tôi. Lý tưởng nhất, tôi muốn chạy một kịch bản thực thi maven sẽ nhanh chóng sao chép tài nguyên web của tôi vào thư mục đầu ra và sửa đổi tệp chiến tranh đã thay đổi mà không cần biên dịch lại mọi thứ khác.Câu hỏi về tài nguyên web Maven

Tôi đã thử gọi mục tiêu tạo tài nguyên nhưng điều đó dường như không tìm trong thư mục src \ main \ webapp vì mong đợi tài nguyên của tôi nằm trong thư mục src \ main \ resources. Tôi đang thiếu gì ở đây?

Cảm ơn

Trả lời

5

Nếu bạn muốn thêm nhiều tài nguyên hơn để được sao chép trong plugin tạo tài nguyên, bạn có thể thay đổi thư mục tài nguyên được sử dụng bởi bản dựng của mình. Thuộc tính project.build.resources kiểm soát thư mục nào được tìm kiếm tài nguyên. Bạn có thể thêm:

<project> 
    ... 
    <build> 
    ... 
    <resources> 
     <resource> 
     <directory>src/main/resources</directory> 
     </resource> 
     <resource> 
     <directory>src/main/webApp</directory> 
     <includes> 
      <include>*.css</include> 
      <include>*.js</include> 

Sau đó, bạn sẽ chạy mvn resources để sao chép tệp.

Cách tiếp cận này là các tệp này sẽ luôn được sao chép trong giai đoạn tài nguyên của bất kỳ bản dựng nào. Bạn có thể giải quyết vấn đề này bằng cách sử dụng mục tiêu copy-resources thay vì tài nguyên. Trong trường hợp này, bạn sẽ sử dụng cấu hình sau:

<build> 
    <plugins> 
     <plugin> 
     <artifactId>maven-resources-plugin</artifactId> 
     <version>2.5</version> 
     <executions> 
      <execution> 
      <id>copy-web-resources</id> 
      <!-- here the phase you need --> 
      <goals> 
       <goal>copy-resources</goal> 
      </goals> 
      <configuration> 
       <outputDirectory>${project.build.directory}/webApp</outputDirectory> 
       <resources> 
       <resource> 
       <directory>src/main/webApp</directory> 
       <includes> 
        <include>*.css</include> 
        <include>*.js</include> 

Sau đó, bạn có thể chạy mvn resources:copy-resources để sao chép tệp.

+0

Cảm ơn bạn vì điều đó. Tôi đã thử cấu hình bạn đã cung cấp cho mục tiêu sao chép tài nguyên nhưng tôi gặp phải lỗi này khi tôi thực thi tài nguyên: sao chép tài nguyên: "Các tham số 'tài nguyên', 'outputDirectory' cho mục tiêu org.apache.maven.plugins: maven-resources -plugin: 2.5: tài nguyên sao chép bị thiếu hoặc không hợp lệ ". Bất kỳ ý tưởng làm thế nào để giải quyết điều đó? – Ayyoudy

+0

Tôi sẽ phải xem cấu hình của bạn. Tôi không thấy bất kỳ lỗi nào trong những gì tôi có ở đó chỉ bằng cách nhìn vào nó. –

+0

nevermind that. Tôi nghĩ rằng nó không thích định dạng * .css vì lý do nào đó! Tôi đã sửa đổi nó thành css/** và thật vui vì điều đó ... kỳ quặc! – Ayyoudy

2

Tôi nghĩ bạn có thể thực hiện việc này bằng cách sử dụng mục tiêu war:war. Điều này sẽ tạo ra một tập tin chiến tranh trong thư mục đầu ra cho bạn mà không cần biên dịch lại nguồn.

+0

Thực ra, không may, điều đó đã không sao chép thay đổi đối với tài nguyên của tôi. Tôi đã thử nó hai lần với hai nguồn tài nguyên khác nhau mà tôi đã sửa đổi và những thay đổi không được chuyển đến thư mục đầu ra hoặc tệp chiến tranh. Không có cách nào để chọn lọc trong những gì được sao chép lại vào tệp chiến tranh? Chiến tranh: mục tiêu chiến tranh mất khoảng 5 phút để chạy cho tôi bởi vì có một thư mục tài nguyên lớn mà nó tái sao chép trên mọi thời gian eventhough nó đã không thay đổi. Đôi khi tôi đang làm việc trên một tệp CSS và muốn tiếp tục thực hiện thay đổi cho đến khi tôi hài lòng với những gì tôi thấy. Tôi không nghĩ rằng sự chậm trễ này là lý tưởng trong những trường hợp như vậy. Còn ý tưởng nào nữa không? – Ayyoudy