一、背景
开发者编写完成源码,还需要进行编译、测试、打包、部署等一系列操作。在一些小型项目中,还可能通过手动方式进行以上操作。但是在大型项目中,难以确定以上操作的顺序,而且会耗费更高的时间成本。
1.构建工具
构建工具就是把一个源码通过编译、连接、打包、测试、部署等一系列操作生成可执行应用程序的一个自动化过程。
2.功能
构建工具主要功能为下载依赖、编译可执行文件、进行测试、部署到服务器等。
3.常用构建工具
Ant:命令式的软件构建工具,对于项目结构没有约束。
Maven:基于XML配置文件的构建工具,使用中央仓库来管理项目依赖。采用约定优于配置的方式,全量式构建、具有强大的依赖管理和插件拓展能力。
Gradle:基于Groovy脚本语言的构建工具,具有更强可读性和可维护性。使用增量式构建,缩短构建时间。也支持依赖管理和插件拓展能力。
二、Maven概述
1.定义
Maven是一个软件工程的项目管理工具,基于工程对象模型(POM)。Maven可以依据统一的模版对项目进行构建、生成报告和文档等操作。
2.优势
2.1 约定大于配置,方便开发者最短时间内完成项目开发。
2.2 项目结构使用统一的POM模型,提供统一的构建系统
2.3 构建过程更简单
2.4 可提供项目单元测试报告、项目依赖列表等项目信息
2.5 提供最佳开发实践指南
3.缺点
3.1 maven相对比较庞大,掌握比较困难
3.2 maven采用全量构建,如果项目比较大构建时间会比较长
3.3 首次导入项目加载所需依赖可能花费时间较长
三、Maven架构
1.架构图
主要包括依赖管理、构建生命周期、插件拓展、项目统一模型POM等。主要工作流程如下:
1.1 根据Pom中配置 从本地仓库或者中央仓库 拉取项目直接依赖或间接依赖的jar包等
1.2 对代码进行编译和连接
1.3 对编译后代码进行单元测试和验证
1.4 进行本地打包或者部署到本地仓库或中央仓库
2.项目统一模型POM
POM是maven中基本的单元,以pom.xml形式在项目目录中。Pom包含项目的信息和依赖信息以及Maven用于构建项目的各种配置信息、目标、插件等。
3.依赖管理
项目中除了开发者的源码还会使用一些外部库,外部库是以jar包的形式存储在中央仓库中。maven主要负责将直接依赖项和间接依赖项下载并解决版本冲突等问题。
4.构建生命周期
maven根据构建目的划分了三个标准的构建周期,并且每个周期都有固定的阶段。maven提供了一些内置的pulgin来实现相应的功能,开发者也可以自定义pulgin并绑定到某些阶段。
总结
这里主要是对maven构建工具背景、主要功能和整体架构进行一个初步了解,接下来会对maven的每个功能进行详细的了解。