我的Maven构建过程在尝试编译GWT时在操作系统级别被杀死,因此构建未完成且不报告成功或失败。我使用-X选项运行mvn3
,这是它发生的地方:
[DEBUG] Execute command :
/bin/sh -c /usr/lib/jvm/java-6-sun-1.6.0.26/jre/bin/java -Xmx512m -classpath <really_long_classpath> com.google.gwt.dev.Compiler -gen <path_loc> -logLevel INFO -style OBF -war <war_path> -localWorkers 1 <module_path>
./build.sh: line 2: 24139 Killed mvn3 -X clean install blah blah
当我从Maven中取出命令并单独运行时,我也遇到了同样的失败。但是,当我在没有/bin/sh -c
的情况下运行Java时,GWT编译得很好。
为什么Maven使用/bin/sh
? Ubuntu 10.04
上的默认shell为bash
。
答案 0 :(得分:2)
如果没有'sh -c',命令没有理由工作,但谁知道呢。
mvn
命令只是一个shell脚本,它设置适当的java环境以使用maven类运行java。它使用/bin/sh
,因为它是在脚本的第一行中设置的。如果您想使用bash
,只需按!/bin/sh
更改脚本!/bin/bash
的第一行。
无论如何,似乎你的ubuntu正在杀死编译器,因为它占用了更多的资源。查看/ var / log / syslog文件,了解内核杀死构建的原因。
1-尝试在gwt-maven
中重新配置pom.xml
插件,以便只启动工作人员
<localWorkers>1</localWorkers>
2-尝试增加gwt编译器进程的内存
<extraJvmArgs>-Xmx1g</extraJvmArgs>
3-尝试运行具有更多内存的maven
$ export MAVEN_OPTS="-Xmx1g"
4-查看你的shell ulimit
并增加适当的参数
$ ulimit -a