build设与编译(Java)

认为这个答案是非常明显的,但在这里:

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

在我的合作社,我们使用ant来build立我们的项目。

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

有关:
编译和编译有什么区别?

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

  1. 生成源(有时)。
  2. 编译源代码
  3. 编译testing源。
  4. 执行testing(unit testing,集成testing等)。
  5. 包装(进入jar子,战争,ejbjar,耳朵)。
  6. 运行健康检查(像Checkstyle,Findbugs,PMD,testing范围等静态分析器)。
  7. 生成报告。

正如你所看到的,编译只是构build的一小部分(最好的做法是使用Maven或Ant等工具完全自动化所有步骤,并持续运行构build,称为持续集成 )。

如果这是一个C / C ++问题,我在这里看到的一些答案是没有语境的,并且更有意义。

简洁版本:

  • “编译”是将.java文件转换成.class文件
  • “构build”是一个通用术语,包括编译和其他任务。

“build筑”是一个通用的术语,描述包括编译在内的整个过程。 例如,构build过程可能包括生成Java代码或文档文件的工具。

通常会有额外的阶段,比如“package”,它把所有的.class文件放到一个.jar或者“clean”中,清除.class文件和临时目录。

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

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

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

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

编译代码和可执行代码有什么区别?

简而言之,

编译将Java代码(人类可读)转换为字节码,以便虚拟机了解它。

构build将所有编译的部分放在一起,并创build(构build)一个可执行文件。

其实你也在做同样的事情 Ant是基于XMLconfiguration文件的编译系统,可以执行与编译软件相关的各种任务。 编译你的java代码只是这些任务之一。 还有许多其他的东西,如复制文件,configuration服务器,组装zip和jar,以及编译其他语言,例如C.

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

查找Ant和Maven以获取更多详细信息。

编译只是将源代码转换为二进制文件,编译时将编译和链接到构build目录所需的任何其他文件

tldr;

  • Build是程序的编译版本。
  • 编译意味着将(程序)转换成可以执行程序的机器代码或更低级的forms。

在Java中 :构build是一个生命周期,包含命名阶段的序列。

例如:maven它有三个构build生命周期,以下是default构build生命周期。

 ◾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.