我们使用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 进行彻底检查。我正在尝试查看当前设置是否可以做任何事情。