构建工具剖析
四大组成部分
- 构建文件
使用脚本语言来表达构建逻辑 最常见的是xml、json格式
- 构建输入输出
输入是指构建任务需要的任务或数据,输出是指构建任务的产出结果
- 构建引擎
用来解析执行构建文件指令或规则的工具用来解析执行构建文件指令或规则的工具
- 依赖管理器
管理构建任务所要依赖的第三方或公共类库
蚂蚁式构建 Ant
发音: [ænt] 蚂蚁的意思
- Apache Ant是一个用Java编写的开源构建工具
- 构建文件使用XML来表示的,可以在任何环境下使用
- 不提供依赖管理器,自行管理
- 结合Ivy可以实现依赖管理器
- Ant构建术语
project、target、task
- 没有对如何定义构建的结构强加任何限制,对源码、输出目录、target拥有完全灵活的选择
- 缺点
XML本身较为臃肿与啰嗦
没有建设项目标准,build文件常常会随着项目开发而变得繁杂重复
无法量化被编译的类或执行的TASK
没有Ivy情况下,Ant很难管理依赖
专家构建 Maven
发音:['mevn] 内行,专家的意思(我接触的人中大部分都读错了)
- 使用约定优于配置的思想,规定了标准的目录布局
- 基于生命周期的思想,通过三套生命周期来管理构建过程
- 构建文件也是使用XML来表示的,可以在任何环境下使用
- 核心功能可以通过开发定制的插件来扩展,社区插件很丰富
- 脚本中可以定义外部依赖库,一般会搭建Nexus结合maven中心仓库来管理
- 缺点
默认的结构和生命周期可能会不适合你的项目
自己定制扩展比较复杂,需要了解Mojos(内部扩展API)
我们想要的构建
- 具有表达式、声明式、可维护的构建语言
- 标准化的项目布局和生命周期,但是具有完全的灵活性和对默认值的完全可配置性
- 定制逻辑灵活易用
- 支持构建多个项目组成的项目结构
- 支持依赖管理
- 可以很好的和Ant、Maven集成
- 高效且有良好的扩展性
是的它就是Gradle,下一代的构建工具