在无头构建模式下运行eclipse时避免错误退出状态

时间:2014-10-03 11:35:59

标签: eclipse headless

编辑:此问题是由于我误解了错误输出。确实存在我不感兴趣的构建配置的构建失败。所以我从构建命令中排除了配置(参见答案)。

我正在运行一个构建脚本,在一个实例中使用eclipse运行无头构建,如下所示:

set -e

# ...

eclipse -nosplash \
 -application org.eclipse.cdt.managedbuilder.core.headlessbuild \
 -import ./ \
 -I /usr/lib/jvm/java-7-openjdk-i386/include/ \
 -I /usr/lib/jvm/java-7-openjdk-i386/include/linux \
 -cleanBuild all

构建成功,因为它输出构建的库。但是,似乎在构建完成后eclipse尝试启动gui。而且由于我在缺少窗口管理器的环境中运行脚本,它会失败并且eclipse会返回错误代码,从而导致我的脚本失败。如果出现实际问题,我非常希望它真的失败。所以我不想删除set -e命令。我怎么能让eclipse不尝试启动它的gui?或者有一些合理的解决方法吗?

这是完成构建libs之后的eclipse输出:

Invoking scanner config builder on project 
Eclipse: Cannot open display: 
Eclipse:
Java was started but returned exit code=1
-Dosgi.requiredJavaVersion=1.7
-XX:MaxPermSize=256m
-Xms40m
-Xmx512m
-Djava.class.path=/vagrant/exec/eclipse//plugins/org.eclipse.equinox.launcher_1.3.0.v20140415-2008.jar
-os linux
-ws gtk
-arch x86
-launcher /vagrant/exec/eclipse/eclipse
-name Eclipse
--launcher.library /vagrant/exec/eclipse//plugins/org.eclipse.equinox.launcher.gtk.linux.x86_1.1.200.v20140603-1326/eclipse_1605.so
-startup /vagrant/exec/eclipse//plugins/org.eclipse.equinox.launcher_1.3.0.v20140415-2008.jar
--launcher.appendVmargs
-product org.eclipse.epp.package.cpp.product
-application org.eclipse.cdt.managedbuilder.core.headlessbuild
-import ./
-I /usr/lib/jvm/java-7-openjdk-i386/include/
-I /usr/lib/jvm/java-7-openjdk-i386/include/linux
-cleanBuild all
-vm /usr/lib/jvm/java-7-openjdk-i386/jre/bin/../lib/i386/client/libjvm.so
-vmargs
-Dosgi.requiredJavaVersion=1.7
-XX:MaxPermSize=256m
-Xms40m
-Xmx512m

1 个答案:

答案 0 :(得分:2)

这是我没有正确阅读输出的情况。我的问题是我使用了-cleanBuild all选项,而只有一个配置可以在系统上构建,可能导致它尝试打开错误对话框。配置名称为Release (mingw)Release (posix)-cleanBuild接受正则表达式输入,所以我最终运行了这样的构建:

eclipse -nosplash \
    --launcher.suppressErrors \
    -application org.eclipse.cdt.managedbuilder.core.headlessbuild \
    -import ./ \
    -I /usr/lib/jvm/java-7-openjdk-i386/include/ \
    -I /usr/lib/jvm/java-7-openjdk-i386/include/linux \
    -cleanBuild .*/.*posix.*