构建与编译(Java)

时间:2010-04-16 02:21:00

标签: java build compilation

认为对此的答案非常明显,但现在就是:

当我在学校的一个小项目(在java中)时,我编译它。

在我的鸡舍上,我们正在使用ant build 我们的项目。

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

  

相关:
  What is the difference between compiling and building?

8 个答案:

答案 0 :(得分:195)

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

  1. 生成来源(有时)。
  2. 编译来源。
  3. 编译测试源。
  4. 执行测试(单元测试,集成测试等)。
  5. 包装(装入jar,war,ejb-jar,ear)。
  6. 运行健康检查(Checkstyle,Findbugs,PMD,测试覆盖等静态分析器)。
  7. 生成报告。
  8. 正如您所看到的,编译只是构建的一个(小)部分(最佳实践是使用Maven或Ant等工具完全自动化所有步骤并连续运行构建,称为{{ 3}})。

答案 1 :(得分:34)

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

简短版本:

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

“Building”是一个泛型术语,用于描述整体过程,其中包括编译。例如,构建过程可能包括生成Java代码或文档文件的工具。

通常会有其他阶段,例如“package”,它将所有.class文件放入.jar,或“clean”清除.class文件和临时目录。

答案 2 :(得分:25)

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

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

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

许多编译器在编译源代码后自动处理链接步骤。

What is the difference between compile code and executable code?

答案 3 :(得分:9)

简单来说就是

  

编译翻译java代码(人类   可读的)到字节码,所以   虚拟机了解它。

     

构建放置所有已编译的部分   在一起并创建(构建)一个   可执行文件。

答案 4 :(得分:4)

其实你在做同样的事情。 Ant是基于XML配置文件的构建系统,可以执行与编译软件相关的各种任务。编译java代码只是其中一项任务。还有许多其他功能,例如复制文件,配置服务器,组装拉链和罐子,以及编译其他语言,例如C.

您不需要Ant来编译您的软件。您可以像在学校一样手动完成。 Ant的另一种替代方案是名为Maven的产品。 Ant和Maven都做同样的事情,但方式完全不同。

查找AntMaven了解详情。

答案 5 :(得分:3)

  • 构建是程序的编译版本。
  • 编译表示将(程序)转换为可以执行程序的机器代码或更低级别的形式。

在Java中:Build是一个生命周期,包含一系列命名阶段。

例如:maven它有三个构建生命周期,下面一个是default构建生命周期。

◾validate - validate the project is correct and all necessary information is available
◾compile - compile the source code of the project
◾test - test the compiled source code using a suitable unit testing framework. These tests should not require the code be packaged or deployed
◾package - take the compiled code and package it in its distributable format, such as a JAR.
◾integration-test - process and deploy the package if necessary into an environment where integration tests can be run
◾verify - run any checks to verify the package is valid and meets quality criteria
◾install - install the package into the local repository, for use as a dependency in other projects locally
◾deploy - done in an integration or release environment, copies the final package to the remote repository for sharing with other developers and projects.

答案 6 :(得分:1)

在Eclipse和IntelliJ中,构建过程包括以下步骤: 清洁以前的包装, 验证, 编译, 测试, 包装,
积分, 校验, 安装, 部署。

答案 7 :(得分:0)

编译只是将源代码转换为二进制,构建正在编译并链接构建目录中所需的任何其他文件