Maven 简介
Maven是一个Java项目管理工具,可以简化项目构建、管理项目依赖、生成报告等。具体介绍参考官网what-is-maven
Maven 安装教程
Maven的安装非常简单,只要2个步骤:
- 下载Maven
- 解压至某个目录(eg:
/usr/local/apache-maven/
),并设置环境变量
各个平台具体安装教程参考官网Installation
注: Maven安装成功后,会在~/.m2/repository
生成一个本地仓库,后续在使用 Maven 构建项目时,如果依赖的包在该仓库中不存在,则先下载相应的依赖包至该仓库。
Maven 使用教程
Maven 基于项目对象模型(POM),具有标准的文件目录结构,通过文件pom.xml
的配置来管理整个 Maven 项目。
目录结构
Maven 项目目录结构可以按约定手工创建,也可通过 Maven 命令自动创建。最简单的目录结构如下所示:
1 | my-app |
创建 Maven 项目的命令如下所示:
1 | mvn archetype:generate \ |
POM
通过 Maven 命令创建项目时,会根据命令参数自动生成pom.xml
文件。根据上述命令生成的pom.xml
文件如下所示:
1 | <project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" |
pom.xml
常用设置:
- project(必填) - This is the top-level element in all Maven pom.xml files.
- modelVersion(必填) - 所使用的POM版本号
- groupId(必填)- 项目创建者的唯一标识,通常用逆置的域名(eg:
io.github.dxh
)。 - artifactId(必填)- 项目的生成产品,命名通常为:
- . - version(必填)- 项目版本号,推荐使用语义化的版本号
- packaging(可选) - 项目生成产品的包类型(eg: jar、war, etc.),默认为
jar
。
生命周期
Maven 构建项目整个生命周期由多个阶段构成:
- validate - 检查项目和必要的信息是否正确
- compile - 编译
- test - 利用单元测试框架测试编译后的代码
- package - 打包,如打包成:jar
- integration-test - 与整个项目集成测试
- verify - 验证包是否可用并且达到质量标准
- install - 将包部署至本地库,可作为本地其它项目的依赖
- deploy - 将最终产品部署至远程仓库,供别的开发人员和项目使用
除了上述阶段之外,还有2个比较常用的生命周期:
- clean - cleans up artifacts created by prior builds
- site - generates site documentation for this project
每个阶段对应一个 Maven 命令,并且命令是按顺序执行的。比如执行mvn package
,则命令validate
、compile
、test
将自动被有序执行。
结束语
通过短暂的半天了解与使用之后,基本的体会是:对于小项目,可能还是直接使用JDK中自带的工具或者IDE的集成工具更为快速简单。对于大项目,特别是存在各种依赖的项目,使用 Maven 将会大大降低项目构建的复杂度。但是,目前初步有个担忧,对于超级大的项目,pom.xml
的维护是不是成为一个问题?传说中,已经有一新的工具流行起来了,它叫Gradle.