从命令行构建 Eclipse Java 项目

新手上路,请多包涵

有没有办法从命令行编译基于 Eclipse 的 Java 项目?

我正在尝试自动化我的构建(使用 FinalBuilder 而不是 ant),而且我既不是 Java 专家也不是 Eclipse 专家。我可能可以弄清楚如何使用直接的 java 命令行选项来执行此操作,但是 Eclipse 项目感觉就像是在浪费很多精力。

如果无法通过命令行编译 Eclipse 项目,是否可以从 Eclipse 中生成所需的 java 命令行?还是有一些文件我可以四处寻找以找到它在幕后进行的编译步骤?


伙计们,我正在寻找 包括蚂蚁的答案。让我重新重申一下原来的问题…….有没有办法从命令行构建一个Eclipse项目?

我不认为这是一个不合理的问题,因为我可以为 visual studio 做这样的事情:

 devenv.exe /build "Debug|Any CPU" "C:\Projects\MyProject\source\MyProject.sln"

原文由 Keith G 发布,翻译遵循 CC BY-SA 4.0 许可协议

阅读 858
2 个回答

您可以从命令行通过工作区构建 eclipse 项目:

 eclipsec.exe -noSplash -data "D:\Source\MyProject\workspace" -application org.eclipse.jdt.apt.core.aptBuild

它使用 jdt apt 插件自动构建您的工作区。这也称为“无头构建”。该死的很难弄清楚。如果你没有使用 win32 exe,你可以试试这个:

 java -cp startup.jar -noSplash -data "D:\Source\MyProject\workspace" -application org.eclipse.jdt.apt.core.aptBuild

更新

几年前,eclipse 将 startup.jar 替换为“equinox launcher”

https://wiki.eclipse.org/Equinox_Launcher

在 Eclipse Mars (MacOX) 上:

 java -jar /Applications/Eclipse.app/Contents/Eclipse/plugins/org.eclipse.equinox.launcher_1.3.100.v20150511-1540.jar -noSplash -data "workspace" -application org.eclipse.jdt.apt.core.aptBuild

-data 参数指定工作区的位置。

Equinox 启动器的版本号将取决于您拥有的 Eclipse 版本。

原文由 Kieveli 发布,翻译遵循 CC BY-SA 3.0 许可协议

为了完成安德烈的回答,蚂蚁解决方案可能类似于 Emacs, JDEE, Ant, and the Eclipse Java Compiler 中描述的解决方案,如下所示:

       <javac
          srcdir="${src}"
          destdir="${build.dir}/classes">
        <compilerarg
           compiler="org.eclipse.jdt.core.JDTCompilerAdapter"
           line="-warn:+unused -Xemacs"/>
        <classpath refid="compile.classpath" />
      </javac>

compilerarg 元素还允许您将额外的命令行参数传递给 eclipse 编译器。

您可以 在此处找到完整的 ant 脚本示例, 该示例将 在命令行中调用

 java -cp C:/eclipse-SDK-3.4-win32/eclipse/plugins/org.eclipse.equinox.launcher_1.0.100.v20080509-1800.jar org.eclipse.core.launcher.Main -data "C:\Documents and Settings\Administrator\workspace" -application org.eclipse.ant.core.antRunner -buildfile build.xml -verbose


但是所有涉及蚂蚁的东西,这不是基思所追求的。

对于批编译,请参考 编译Java代码,特别是“ 使用批编译器”部分

批处理编译器类位于 JDT Core 插件中。类的名称是 org.eclipse.jdt.compiler.batch.BatchCompiler。它被打包成plugins/org.eclipse.jdt.core_3.4.0..jar。从 3.2 开始,它也可以单独下载。该文件的名称是 ecj.jar。

从 3.3 开始,这个 jar 还包含对 jsr199(Compiler API)的支持和对 jsr269(Annotation 处理)的支持。为了使用注释处理支持,需要 1.6 VM。

从命令行运行批处理编译器会给出

java -jar org.eclipse.jdt.core_3.4.0<qualifier>.jar -classpath rt.jar A.java

或者:

 java -jar ecj.jar -classpath rt.jar A.java

该部分还详细介绍了所有 Java 编译选项。

与 Visual Studio 命令行编译功能的不同之处在于, Eclipse 似乎并不直接读取命令行参数中的 .project 和 .classpath 。您必须在各种命令行选项中报告 .project 和 .classpath 中包含的所有信息,以便获得完全相同的编译结果。

因此,简短的回答是:“是的,Eclipse 确实如此。” ;)

原文由 VonC 发布,翻译遵循 CC BY-SA 3.0 许可协议

撰写回答
你尚未登录,登录后可以
  • 和开发者交流问题的细节
  • 关注并接收问题和回答的更新提醒
  • 参与内容的编辑和改进,让解决方法与时俱进
推荐问题