我的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
上的默认外壳是bash
。
理由在没有"sh -c"的情况下工作命令,但谁知道呢。
mvn
命令只是一个 shell 脚本,它设置适当的 java 环境以使用 maven 类运行 java。它使用/bin/sh
因为它设置在脚本的第一行。如果要使用bash
只需更改脚本的第一行!/bin/sh
!/bin/bash
。
无论如何,似乎您的 ubuntu 正在杀死编译器,因为它占用了更多允许的资源。看看你的/var/log/syslog 文件,看看内核终止构建的原因。
1-尝试在pom.xml
中重新配置gwt-maven
插件,以便它仅启动工作线程
<localWorkers>1</localWorkers>
2-尝试增加GWT编译器进程的内存
<extraJvmArgs>-Xmx1g</extraJvmArgs>
3-尝试使用更多内存运行Maven
$ export MAVEN_OPTS="-Xmx1g"
4-查看您的外壳ulimit
并增加适当的参数
$ ulimit -a