沿着exec-maven-plugin的某处吃错误消息> Node.js> r.js

时间:2013-02-12 02:23:44

标签: node.js maven requirejs stderr

我们正在使用exec-maven-plugin在Node.js下运行RequireJS的优化器(r.js)(因为它比Rhino快得多):

<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的控制台输出中。我要解决的问题是,我使用-X标志重新运行Maven命令以获取调试输出,以便exec-maven-plugin输出正在执行的实际命令。它类似于:

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

当我从命令行手动运行命令时,我会在控制台中获取实际的编译错误,然后继续修复它们。

我已尝试将stderr重定向到带有2>&1的stdout无效(在Windows上),因为我无法立即找到一种方法来将重定向位作为参数制作exec-maven-plugin。我没有太过追求那条路线,因为这只是一个疯狂的猜测,这是一个stderr / stdout问题 - 它可能是,但我只是在猜测。

关于可能发生的事情的任何指示,或者我可以采取进一步诊断步骤的任何建议?请记住,在这个问题中有多个移动部件:Maven,exec-maven-plugin,Node.js,r.js,还有一个疲惫的脑袋。

P.S。我正在考虑将requirejs-maven-plugin作为最后的手段,因为项目时间表不允许我现在对POM进行彻底的改造。我正试着看看我能用当前的设置做些什么。

1 个答案:

答案 0 :(得分:1)

如何在脚本中包含对node.jsr.js的调用,然后从maven-exec插件调用?

r.js看,它的输出似乎使用了console.log。也许从shell脚本运行它将允许您捕获输出,将其传递到文件,正则表达式中的错误等等。

根据操作系统的不同,这可能很容易。