2013-02-12 28 views
5

Chúng tôi đang sử dụng exec-maven-plugin để chạy trình tối ưu hóa RequireJS (r.js) trong Node.js (vì nó nhanh hơn Rhino nhiều lần):Thông báo lỗi ăn ở đâu đó dọc theo plugin exec-maven> Node.js> r.js

<plugin> 
    <groupId>org.codehaus.mojo</groupId> 
    <artifactId>exec-maven-plugin</artifactId> 
    <version>1.2</version> 
    <executions> 
     <execution> 
      <id>compile-js</id> 
      <phase>prepare-package</phase> 
      <goals> 
       <goal>exec</goal> 
      </goals> 
      <configuration> 
       <executable>${node.executable}</executable> 
       <arguments> 
        <argument>${project.build.directory}/dependency/requirejs/r.js</argument> 
        <argument>-o</argument> 
       </arguments> 
      </configuration> 
     </execution> 
    </executions> 
</plugin> 

Vấn đề là, bất cứ khi nào có bất kỳ vấn đề nào trong quá trình biên dịch, các thông báo lỗi mà r.js được cho là phát ra không được hiển thị trong đầu ra giao diện điều khiển của Maven. Những gì tôi làm để khắc phục sự cố là, tôi chạy lại lệnh Maven với cờ -X để lấy đầu ra gỡ lỗi sao cho lệnh exec-maven-plugin xuất ra lệnh thực tế đang được thực hiện. Nó giống như:

 
project-root/target/dependency/node/node \ 
    project-root/target/dependency/requirejs/r.js \ 
    -o src/main/webapp/app.build.json 

Khi tôi chạy lệnh thủ công từ dòng lệnh, sau đó tôi nhận được lỗi biên dịch thực sự trong bảng điều khiển và sau đó tiến hành sửa chúng.

Tôi đã thử nghiệm chuyển hướng stderr thành stdout với 2>&1 không có kết quả (trên Windows) vì tôi không thể tìm ngay cách tạo plugin exec-maven giống như bit chuyển hướng làm đối số. Tôi đã không theo đuổi con đường đó quá xa bởi vì nó chỉ là một dự đoán hoang dã rằng đây là một vấn đề stderr/stdout - nó có thể được, nhưng tôi chỉ đơn thuần suy đoán.

Bất kỳ gợi ý nào về những gì có thể xảy ra hoặc bất kỳ đề xuất nào cho các bước chẩn đoán thêm mà tôi có thể thực hiện? Hãy nhớ có nhiều phần chuyển động trong vấn đề này: Maven, plugin-maven-plugin, Node.js, r.js và một đầu mệt mỏi.

P.S. Tôi đang xem xét việc đưa ra requirejs-maven-plugin một cú đánh như một phương sách cuối cùng vì thời gian dự án không cho phép tôi thực hiện sửa đổi hoàn toàn POM ngay bây giờ. Tôi đang cố gắng để xem nếu có bất cứ điều gì tôi có thể làm với các thiết lập hiện tại.

+0

Bạn đã thử sử dụng tham số 'outputFile' chưa? – aib

+0

@aib Có. Thật không may, nó không làm bất cứ điều gì do một lỗi đã biết với plugin exec-maven: http://jira.codehaus.org/browse/MEXEC-86 –

+1

Trong túi du lịch cuối cùng của bạn, hãy xem xét [jszip maven plugin] (http : //jszip.org) nó là một Rhino khác dựa trên mặc dù –

Trả lời

1

Gọi gói node.jsr.js trong tập lệnh, sau đó bạn gọi từ plugin maven-exec?

Từ giao diện r.js, dường như sử dụng console.log cho đầu ra của nó. Có thể chạy nó từ một kịch bản shell sẽ cho phép bạn nắm bắt đầu ra, đặt nó vào một tệp, regex cho một lỗi, v.v.

Tùy thuộc vào hệ điều hành, điều này có thể dễ dàng thực hiện.

+0

Có, điều này có khả năng có thể làm việc. Mặc dù, do môi trường xây dựng của chúng tôi hoạt động như thế nào bên trong các ổ đĩa được ánh xạ tạm thời, thật khó cho tôi để giữ một tệp kết quả trừ khi. Tôi muốn tìm một cách để có được các lỗi xuất hiện trong giao diện điều khiển. Có lẽ, đề xuất của bạn + a 2> & 1 để remap stderr thành stdout. –

+0

Tôi có nghĩa là bạn nên đưa đầu ra vào một tệp bên trong tập lệnh (sử dụng 2> & 1), sau đó bạn có thể tạo một tệp 'cat' từ bên trong tập lệnh hoặc sử dụng' grep' để tìm lỗi. Bạn không cần phải truy cập vật lý các tập tin, tôi đồng ý. – nwinkler

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