问题
认为对此的答案非常明显,但在这里:
当我在学校的一个小项目(在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?