2013-02-12 7 views
5

Stiamo usando exec-maven-plugin per eseguire l'ottimizzatore di RequireJS (r.js) in Node.js (perché è molto più veloce di Rhino):Messaggi di errore mangiati da qualche parte lungo exec-maven-plugin> Node.js> r.js

Il problema è che, ogni volta che si verifica un problema durante la compilazione, i messaggi di errore che r.js dovrebbe eliminare non vengono visualizzati nell'output della console di Maven. Quello che faccio per risolvere il problema è, rieseguire il comando Maven con il flag -X per ottenere l'output di debug in modo che exec-maven-plugin restituisca l'effettivo comando che viene eseguito. E 'qualcosa di simile:

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

Quando faccio funzionare l'ordine manualmente dalla riga di comando, Allora ottengo gli errori di compilazione effettivi nella console e quindi procedere a risolverli.

Ho sperimentato il reindirizzamento dello stderr allo stdout con 2>&1 senza alcun risultato (su Windows) perché non sono riuscito a trovare immediatamente un modo per rendere exec-maven-plugin come il bit di reindirizzamento come argomento. Non ho seguito questa strada troppo lontano perché è solo una folle ipotesi che questo è un problema di stderr/stdout - potrebbe essere, ma sto solo speculando.

Eventuali indicazioni su cosa potrebbe accadere o suggerimenti per ulteriori passi diagnostici che posso intraprendere? Ricorda che ci sono più parti mobili in questo problema: Maven, exec-maven-plugin, Node.js, r.js e una testa stanca.

P.S. Sto considerando di dare a requirejs-maven-plugin uno scatto come ultima risorsa perché la cronologia del progetto non mi consente di eseguire una revisione completa del POM in questo momento. Sto provando a vedere se c'è qualcosa che posso fare con la configurazione corrente.

+0

Hai provato a utilizzare il parametro 'outputFile'? – aib

+0

@aib Sì. Sfortunatamente non fa nulla a causa di un bug noto con exec-maven-plugin: http://jira.codehaus.org/browse/MEXEC-86 –

+1

Nella tua ultima borsa da viaggio, considera [jszip maven plugin] (http : //jszip.org) è un'altra basata su Rhino anche se –

risposta

1

Come avvolgere la chiamata in node.js e r.js in uno script, che si chiama dal plugin maven-exec?

Da uno sguardo a r.js, sembra utilizzare console.log per l'output. Forse eseguirlo da uno script di shell ti permetterà di catturare l'output, collegarlo a un file, regex di errori, ecc.

A seconda del sistema operativo, questo potrebbe essere facile da fare.

+0

Sì, questo potrebbe potenzialmente funzionare. Tuttavia, a causa di come il nostro ambiente di build funziona all'interno di unità mappate temporanee, è difficile per me ottenere il file risultante a meno che. Preferirei trovare un modo per far apparire gli errori nella console. Forse, il tuo suggerimento + a 2> & 1 per rimappare stderr su stdout. –

+0

Intendevo dire che dovresti canalizzare l'output in un file all'interno dello script (usando 2> & 1), quindi potresti fare un 'cat file' all'interno dello script, o usare qualcosa come' grep' per cercare errori. Non dovresti avere fisicamente accesso ai file, sono d'accordo. – nwinkler

Problemi correlati