Maven
一、Maven的概念
Apache Maven is a software project management and comprehension tool. Based on the concept of a project object model (POM), Maven can manage a project’s build, reporting and documentation from a central piece of information.
是一个软件(特别是Java软件)项目管理及自动构建工具,由Apache软件基金会所提供。基于项目对象模型(缩写:POM)概念,Maven利用一个中央信息片断能管理一个项目的构建、报告和文档等步骤。
Maven是:构建工具,依赖管理工具,项目信息聚合工具
二、Maven的构建生命周期
maven对构建(build)的过程进行了抽象和定义,这个过程被称为构建的生命周期(lifecycle)。
生命周期(lifecycle)由多个阶段(phase)组成,每个阶段(phase)会挂接一到多个goal。
goal是maven里定义任务的最小单元,相当于ant里的target。
可以理解maven为一个插件的容器,每个插件绑定到某个goal执行
默认生命周期的阶段 | 描述 |
---|---|
验证 | 确保当前配置和POM的内容是有效的。这包括对pom。xml文件树的验证 |
初始化 | 在执行构建生命周期的主任务之前可以进行初始化。 |
生成源码 | 代码生成器可以开始生成以后阶段中处理或编译的源代码。 |
处理源码 | 提供解析,修改和转换源码。常规源码和生成的源码都可以在这里处理 |
生成资源 | 可以生成非源码资源。通常包括元数据文件和配置文件。 |
处理资源 | 处理非源码资源。修改、转换和重定位资源都在这阶段发生。 |
编译 | 编译源码。编译过的类被放到目标目录树中。 |
处理类 | 处理类文件转换和增强步骤。字节码交织器和常用工具在这一阶段操作 |
生成测试源码 | mojo 可以生成要操作的单元测试代码。 |
处理测试源码 | 在编译前对测试源码执行任何必要的处理。在这一阶段,可以修改、转换或复制源代码 |
生成测试资源 | 允许生成与测试相关的资源 |
处理测试资源 | 可以处理、转换和重新定位与测试相关的资源。 |
测试编译 | 编辑单元测试的源码。 |
处理测试代码 | 处理测试代码。 |
测试 | 运行编译过的单元测试并累计结果。 |
打包前准备 | 打包前准备 |
打包 | 将可执行的二进制文件打包到一个分布式归档文件中。 |
前集成测试 | 准备集成测试。 |
集成测试 | 执行真正的集成测试。 |
后集成测试 | 解除集成测试准备。 |
检验 | 检验可部署归档的有效性和完善性。 |
安装 | 将该归档添加到本地Maven目录。 |
部署 | 将该归档添加到远程Maven目录。 |