Build Tools

Posted lijianxuan

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了Build Tools相关的知识,希望对你有一定的参考价值。

1.Building tool是什么?

(Building tool)构建工具是一种工具,它负责构建流程的所有内容,并自动化与构建项目相关的所有内容。它致力于以下任务:

  • 生成源代码(如果在软件项目中使用自动生成的代码)。
  • 从项目的源代码生成文档。
  • 编译源代码。
  • 将已编译的代码打包到JAR文件或ZIP文件或WAR文件中。
  • 将打包的代码安装在本地存储库,服务器存储库或中央存储库或其他位置。

2.为什么要使用Building tool?

Build tool(构建工具)是从源代码自动创建可执行应用程序的程序。构建包括将代码编译,链接和打包成可用或可执行的形式。在小项目中,开发人员通常会手动调用构建过程。这对于较大的项目来说是不实际的,在这些项目中,很难跟踪需要构建的内容,构建过程中的顺序和依赖关系。使用自动化工具可以使构建过程更加一致;(Building tool)可以让任务自动化,可以最大限度地降低人工在手动构建软件时出错的风险,并且通常比手动执行相同过程的人员更快地进行构建。

使用(Building tool)构建工具对软件开发项目的好处:

  • 提高产品质量
  • 加速编译和链接处理
  • 消除冗余任务
  • 尽量减少“糟糕的构建”
  • 消除对关键人员的依赖
  • 有研究和发布的历史,以便调查问题
  • 节省时间和金钱 - 由于上面列出的原因

3.Java世界现在主流的Building tool有哪些?

Java世界中主要有三大构建工具:Ant、Maven和Gradle。经过几年的发展,Ant几乎销声匿迹、Maven也日薄西山,而Gradle的发展则如日中天。

Gradle和Maven都是项目自动构建工具,编译源代码只是整个过程的一个方面,更重要的是,你要把你的软件发布到生产环境中来产生商业价值,所以,你要运行测试,构建分布、分析代码质量、甚至为不同目标环境提供不同版本,然后部署。整个过程进行自动化操作是很有必要的。

Ant:

Ant是所谓的“现代构建工具”中的第一个,用于自动化构建过程。从理论上讲,它有点像Make,没有Make的皱纹。它以Java实现,主要用于Java项目。Ant的第一个公开发行版是在2000年,由于独立于平台(如Java),具有较低的设置障碍和提供可重复的构建,它很快成为最受欢迎的Java项目构建工具。后来,它也获得了接受插件的能力。

然而,Ant被批评有一些缺点。构建脚本是用XML编写的,XML本质上是分层的,不适合程序编程,这在构建脚本中经常需要。Ant经常声称过于冗长,这意味着它最终会使大型项目的构建脚本难以管理。

Maven:

Maven于2004年首次发布,旨在改进开发人员当时使用Ant和其他构建工具所遇到的一些问题。Maven的最大成就被认为是项目结构约定,依赖关系管理和中央工件库Maven Central的引入。

Maven仍然使用XML来编写构建文件(pom.xml),但结构非常不同,因为它变成了声明式的。现在开发人员不必记下导致某些目标的所有命令,而是描述项目的结构(如果它与约定不同),Maven本身提供了程序员可以调用的可用目标。此外,Maven能够通过网络下载依赖项。

Gradel:

Gradle是三者中最年轻的构建工具,它的开发人员试图将Ant的强大功能和灵活性与Maven的依赖管理和约定相结合,以创建漂亮而有光泽的构建工具。经过几年的开发人员,Gradle v1.0于2012年发布,并迅速开始流行起来。它正在快速发展并已被一些大型企业采用 - 例如,Gradle被选为Google android操作系统的构建工具。

一个有趣的观点是,使用Gradle,XML不再使用了 - 相反,开发人员拥有基于JVM语言Groovy的域特定语言(DSL),这是发明的,因此开发人员可以抛弃XML的冗长,写得更简单明了声明。这引发了用户之间的争论,即标准的,易于理解(但冗长的)XML风格是否比DSL更好或更差。

参考:

https://developer.fedoraproject.org/tech/languages/java/java-build-tools-installation.html

https://zeroturnaround.com/rebellabs/java-build-tools-maven-gradle-and-ant-plus-the-dsl-vs-xml-debate/

以上是关于Build Tools的主要内容,如果未能解决你的问题,请参考以下文章

无法在 app/build.gradle 中在线导入 com.android.build.OutputFile 解析符号“build”

teamcity api如何通过casename找到build

build.sbt 和 build.scala 有啥区别?

TeamCity : 配置 Build 过程

Build 步骤的执行策略

项目中的 build.gradle 与应用程序中的 build.gradle