2013-02-12 1 views
5

Мы используем exec-maven-plugin для запуска оптимизатора RequireJS (r.js) под Node.js (потому что это намного быстрее, чем Rhino):Сообщения об ошибках, которые есть где-то вдоль exec-maven-plugin> 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, не отображаются на выходе консоли Maven. Что я делаю для устранения неполадок, я перезапущу команду Maven с флагом -X, чтобы получить отладочный вывод, чтобы exec-maven-plugin выводил текущую исполняемую команду. Это что-то вроде:

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

Когда я запускаю команду вручную из командной строки, то я получаю фактические ошибки компиляции в консоли, а затем приступить к их устранению.

Я экспериментировал с перенаправлением stderr на stdout с 2>&1 безрезультатно (в Windows), потому что я не мог сразу найти способ сделать exec-maven-plugin похожим на бит перенаправления в качестве аргумента. Я не преследовал этот маршрут слишком далеко, потому что это просто дикая догадка, что это проблема stderr/stdout - это может быть, но я просто размышляю.

Любые указания относительно того, что может произойти, или любые предложения по дальнейшим диагностическим шагам, которые я могу предпринять? Помните, что в этой проблеме есть несколько движущихся частей: Maven, exec-maven-plugin, Node.js, r.js и одна усталая голова.

P.S. Я рассматриваю возможность сделать requirejs-maven-plugin выстрелом в качестве последнего средства, потому что временная шкала проекта не позволяет мне провести капитальный ремонт POM прямо сейчас. Я пытаюсь понять, есть ли что-то, что я могу сделать с текущей настройкой.

+0

Вы пытались использовать параметр 'outputFile'? – aib

+0

@aib Да. К сожалению, он ничего не делает из-за известной ошибки с помощью exec-maven-plugin: http://jira.codehaus.org/browse/MEXEC-86 –

+1

В вашем последнем пакете, пожалуйста, рассмотрите [jszip maven plugin] (http : //jszip.org), это еще один носорог, но –

ответ

1

Как насчет обертывания вызова node.js и r.js в скрипте, который вы затем вызываете из плагина maven-exec?

От взгляда на r.js, он использует console.log для его вывода. Возможно, его запуск из сценария оболочки позволит вам поймать вывод, передать его в файл, регулярное выражение для ошибок и т. Д.

В зависимости от ОС это может быть легко сделать.

+0

Да, это может сработать. Хотя из-за того, что наша среда сборки работает во временных сопоставленных дисках, мне трудно задержать результирующий файл, если только. Я бы предпочел найти способ получить ошибки в консоли. Возможно, ваше предложение + 2> & 1 для переназначения stderr на stdout. –

+0

Я имел в виду, что вы должны вывести вывод в файл внутри скрипта (используя 2> и 1), тогда вы можете сделать «файл кошки» внутри скрипта или использовать что-то вроде 'grep' для поиска ошибок. Я согласен, вам не нужно физически обращаться к файлам. – nwinkler

 Смежные вопросы

  • Нет связанных вопросов^_^