问题

认为对此的答案非常明显,但在这里:

当我在学校的一个小项目(在java中)Icompileit。

在我的鸡舍我们正在使用ant tobuildour项目。

我认为编译是构建的一个子集。它是否正确?构建和编译有什么区别?

相关:编译和构建有什么区别?


#1 热门回答(171 赞)

"构建"是一个涵盖创建软件"可交付"所需的所有步骤的过程。在Java世界中,这通常包括:

  • 生成源(有时)。
  • 编译来源。
  • 编译测试源。
  • 执行测试(单元测试,集成测试等)。
  • 包装(装入罐子,战争,ejb-jar,耳朵)。
  • 运行健康检查(如Checkstyle,Findbugs,PMD,测试覆盖等静态分析器)。
  • 生成报告。

正如你所看到的,编译只是构建的一个(小)部分(最佳实践是使用Maven或Ant等工具完全自动化所有步骤并连续运行构建,即Continuous Integration)。


#2 热门回答(32 赞)

我在这里看到的一些答案是超出上下文的,如果这是一个C / C问题则更有意义。

简洁版本:

  • "编译"正在将.java文件转换为.class文件
  • "建筑"是一个通用术语,包括编译和其他任务。

"建筑"是ageneric,描述了包括编译在内的整体过程。例如,构建过程可能包括生成Java代码或文档文件的工具。

通常还会有其他阶段,比如"package",它会获取所有.class文件并将它们放入.jar,或"clean"清除.class文件和临时目录。


#3 热门回答(22 赞)

编译是将源代码转换为目标代码的行为。

链接是将目标代码与库组合成原始可执行文件的行为。

Building是由编译链接组成的序列,可能还有其他任务,例如安装程序创建。

许多编译器在编译源代码后自动处理链接step。
What is the difference between compile code and executable code?


原文链接