2013-02-12 52 views
5

हम RequireJS के अनुकूलक (r.js) Node.js अंतर्गत चलाने के लिए (क्योंकि यह बहुत तेजी से राइनो से है) exec-maven-plugin उपयोग कर रहे हैं:त्रुटि संदेश कार्यकारी-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> 

समस्या यह है कि जब भी संकलन के दौरान कोई समस्या हो, तो त्रुटि संदेश जो r.js को बाहर निकालना है, वे मेवेन के कंसोल आउटपुट में नहीं दिखाए जाते हैं। समस्या निवारण के लिए मैं क्या करता हूं, मैं डीएएनजी आउटपुट प्राप्त करने के लिए -एएन ध्वज के साथ मेवेन कमांड को दोबारा शुरू करता हूं ताकि निष्पादन-मैवेन-प्लगइन वास्तविक कमांड निष्पादित हो।

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

जब मैं कमांड लाइन से मैन्युअल रूप से आदेश चला, मैं तो कंसोल में वास्तविक संकलन त्रुटियों मिलता है और फिर उन्हें फिक्सिंग के लिए आगे बढ़ें: यह की तरह कुछ है।

मैं stderr पुनः निर्देशित कोई लाभ नहीं हुआ (Windows पर) के लिए 2>&1 साथ stdout क्योंकि मैं तुरंत एक तर्क के रूप पुनर्निर्देशन बिट की तरह कार्यकारी-Maven-प्लगइन बनाने के लिए एक तरह से नहीं मिल सका के साथ प्रयोग किया है। मैंने उस मार्ग को बहुत दूर नहीं किया क्योंकि यह सिर्फ एक जंगली अनुमान है कि यह एक stderr/stdout मुद्दा है - यह हो सकता है, लेकिन मैं केवल अनुमान लगा रहा हूँ।

क्या हो रहा है के बारे में कोई संकेतक, या आगे के निदान चरणों के लिए कोई सुझाव जो मैं ले सकता हूं? कृपया याद रखें कि इस समस्या में कई चलती हिस्से हैं: मेवेन, exec-maven-plugin, node.js, r.js, और एक थका हुआ सिर।

पीएस मैं requirejs-maven-plugin को अंतिम उपाय के रूप में एक शॉट देने पर विचार कर रहा हूं क्योंकि परियोजना समयरेखा मुझे अभी पीओएम का पूरा ओवरहाल करने की अनुमति नहीं देती है। मैं यह देखने की कोशिश कर रहा हूं कि वर्तमान सेटअप के साथ मैं कुछ भी कर सकता हूं या नहीं।

+0

क्या आपने 'outputFile' पैरामीटर का उपयोग करने का प्रयास किया था? – aib

+0

@ एआईबी हां। दुर्भाग्यवश यह निष्पादन-मैवेन-प्लगइन के साथ ज्ञात बग के कारण कुछ भी नहीं करता है: http://jira.codehaus.org/browse/MEXEC-86 –

+1

अपने अंतिम रिज़ॉर्ट बैग में, कृपया [jszip maven प्लगइन] पर विचार करें (http : //jszip.org) यह एक और राइनो आधारित है हालांकि –

उत्तर

1

किसी स्क्रिप्ट में node.js और r.js पर कॉल को लपेटने के बारे में, तो आप maven-exec प्लगइन से कॉल करते हैं?

r.js पर एक नज़र से, ऐसा लगता है कि यह आउटपुट के लिए console.log का उपयोग करता है। हो सकता है कि इसे एक शेल स्क्रिप्ट से चलाना आपको आउटपुट को पकड़ने, फ़ाइल में पाइप करने, त्रुटियों के लिए रेगेक्स इत्यादि की अनुमति देगा।

ओएस के आधार पर, यह करना आसान हो सकता है।

+0

हां, यह संभावित रूप से काम कर सकता है। हालांकि, हमारे निर्माण पर्यावरण अस्थायी मैप किए गए ड्राइव के अंदर कैसे काम करता है, इसके कारण परिणामस्वरूप फ़ाइल को पकड़ना मेरे लिए मुश्किल है। मैं कंसोल में त्रुटियों को प्रकट करने के लिए एक रास्ता खोजना चाहता हूं। शायद, आपके सुझाव + एक 2> और 1 stderr stdout को remap करने के लिए। –

+0

मेरा मतलब था कि आपको आउटपुट को स्क्रिप्ट के अंदर एक फ़ाइल में पाइप करना चाहिए (2> और 1 का उपयोग करके), तो आप स्क्रिप्ट के अंदर से 'बिल्ली फ़ाइल' कर सकते हैं, या त्रुटियों को देखने के लिए 'grep' जैसे कुछ का उपयोग कर सकते हैं। मुझे फाइलों को भौतिक रूप से एक्सेस नहीं करना चाहिए, मैं सहमत हूं। – nwinkler