build设与编译(Java)
认为这个答案是非常明显的,但在这里:
当我在学校的一个小项目(在Java中)我编译它。
在我的合作社,我们使用ant来build立我们的项目。
我认为编译是build筑的一个子集。 它是否正确? build立和编译有什么区别?
有关:
编译和编译有什么区别?
“构build”是一个涵盖创build软件“可交付”所需的所有步骤的过程。 在Java世界中,这通常包括:
- 生成源(有时)。
- 编译源代码
- 编译testing源。
- 执行testing(unit testing,集成testing等)。
- 包装(进入jar子,战争,ejbjar,耳朵)。
- 运行健康检查(像Checkstyle,Findbugs,PMD,testing范围等静态分析器)。
- 生成报告。
正如你所看到的,编译只是构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.