「Gradle学习笔记」一、构建工具

构建工具的产生

  在项目开发过程中,出于测试或正式发布的目的,需要进行一系列步骤来构建项目生成可执行的二进制文件。一般来说,首先需要确定项目所需的依赖都已正确安装,然后将项目源代码和依赖编译链接生成可执行的二进制文件。若存在自动化的测试任务,需要运行测试保证程序的正确性,之后将二进制代码打包发布,如下图所示。
构建项目的常见步骤  在小型项目中,开发者往往还可以手工输入命令调用构建过程。但在大型的项目,人工确定需要被构建的模块、构建的顺序以及解决项目中的依赖关系几乎是不可能的,而且这样做还使开发人员把大量的时间和精力浪费在了重复的机械性工作上。但计算机却很适合用来解决机械且重复的工作,因此自然而然催生了自动化构建的概念,并在1976年由Stuart Feldman实现了世界上第一个软件构建工具Make。
  维基百科对自动化构建(Build Automation)定义如下:

  Build automation is the process of automating the creation of a software build and the associated processes including: compiling computer source code into binary code, packaging binary code, and running automated tests.1
  自动化构建是将软件的构建自动化的过程,其内容包括:将源代码编译成二进制代码、打包二进制代码并运行自动化的测试。

常见构建工具

构建工具的优点2

1. 自动化构建过程
  上文已经提到过,将项目从源代码打包成用于发布的二进制可执行文件需要经历若干步骤,这些步骤是比较固定的,而且在开发时需要经常执行这一系列动作。
  完全可以使用构建工具完成这些高度重复、机械性的工作,让开发人员把精力放在真正的项目开发工作中,提高开发效率。

2. 自动管理依赖
  在不使用构建工具开发Java项目时,一般需要手动下载相应依赖的JAR包并放到项目的lib/目录中,并且使用版本控制工具如Git时需要将库文件一并上传,导致项目臃肿。
  部分构建工具如Maven或Gradle等集成了依赖管理的功能,开发人员在配置文件中指定项目需要的依赖及版本号后,构建工具可以自动管理和下载正确版本的项目依赖。这一优势在多人协作开发时更显著,可以避免很多版本不正确导致的问题。

3. 自动确定命令的执行顺序
  一些命令具有严格的执行顺序,如:Java的类A使用了类B,则需要首先编译类B,才能正确地编译类A(某些IDE也可以自动处理这种关系,所以这一过程并不一定可见)。对于大型的项目,要人工理清依赖关系,然后按正确的顺序执行编译命令几乎是不可能的,而构建工具可以解决这个问题。

4. 加快构建速度
  对于并不互相依赖的任务,构建工具可以充分发挥多核CPU的优势,并行执行多个任务,加快构建速度。而部分构建工具如Gradle采用了更高级的策略来取得进一步的加速。

5. 使用持续集成(CI)的必要前提
  在持续集成(Continuous Integration)实践中,代码集成到主干前,必须经过自动构建和自动化测试,以便尽早发现代码中的错误。因此若要使用持续集成,则必须使用自动构建工具。

Java构建工具的发展

  Java生态中最常用的三种构建工具分别为Ant、Maven和Gradle,这三种工具的兴衰交替也体现了构建工具设计思想的演进。其发布的时间节点如下所示:

  • 2000 — Apache Ant发布
  • 2002 — Apache Maven 1.0发布
  • 2012 — Gradle 1.0发布

  Ant使用XML文件定义任务及任务之间的依赖关系,具有较高的灵活性。目前Ant已经逐渐淡出历史舞台。
  Maven遵循约定优于配置(Convention over Configuration) 的原则,若在创建项目时遵循相应的约定,则可以避免许多配置文件的书写。另外,Maven提出了仓库(repository)的概念,具有依赖管理的能力,能自动管理和正确下载项目构建需要的大量依赖。
  Gradle是新生力量,综合了Ant和Maven的优点,兼具灵活性和约定优于配置的设计原则,同时也具有依赖管理的功能。Gradle使用Groovy DSL或Kotlin DSL书写构建脚本,具有极大的灵活性,且相较XML更加简洁。


  1. Build Automation - Wikipeida ↩︎

  2. A general introduction to build tools ↩︎

  • 1
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值