5

我们使用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 输出正在执行的实际命令。它是这样的:

项目根/目标/依赖项/节点/节点\
    项目根/目标/依赖/requirejs/r.js \
    -o src/main/webapp/app.build.json

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

我已经尝试过将 stderr 重定向到 stdout2>&1但无济于事(在 Windows 上),因为我无法立即找到一种方法来使 exec-maven-plugin 像重定向位一样作为参数。我没有走得太远,因为这只是一个疯狂的猜测,即这是一个标准错误/标准输出问题——它可能是,但我只是在猜测。

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

PS 我正在考虑将requirejs-maven-plugin作为最后的手段,因为项目时间表不允许我现在对 POM 进行彻底检查。我正在尝试查看当前设置是否可以做任何事情。

4

1 回答 1

1

如何将调用包装在脚本中,node.js然后r.jsmaven-exec插件调用?

从外观上看r.js,它似乎console.log用于它的输出。也许从 shell 脚本运行它可以让您捕获输出,将其通过管道传输到文件中,正则表达式错误等。

根据操作系统,这可能很容易做到。

于 2013-02-18T09:17:57.547 回答