我们正在使用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进行彻底的改造。我正试着看看我能用当前的设置做些什么。
答案 0 :(得分:1)
如何在脚本中包含对node.js
和r.js
的调用,然后从maven-exec
插件调用?
从r.js
看,它的输出似乎使用了console.log
。也许从shell脚本运行它将允许您捕获输出,将其传递到文件,正则表达式中的错误等等。
根据操作系统的不同,这可能很容易。