Maven快速入门

Maven 简介

Maven是一个Java项目管理工具,可以简化项目构建、管理项目依赖、生成报告等。具体介绍参考官网what-is-maven

Maven 安装教程

Maven的安装非常简单,只要2个步骤:

  1. 下载Maven
  2. 解压至某个目录(eg:/usr/local/apache-maven/),并设置环境变量

各个平台具体安装教程参考官网Installation

注: Maven安装成功后,会在~/.m2/repository生成一个本地仓库,后续在使用 Maven 构建项目时,如果依赖的包在该仓库中不存在,则先下载相应的依赖包至该仓库。

Maven 使用教程

Maven 基于项目对象模型(POM),具有标准的文件目录结构,通过文件pom.xml的配置来管理整个 Maven 项目。

目录结构

Maven 项目目录结构可以按约定手工创建,也可通过 Maven 命令自动创建。最简单的目录结构如下所示:

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
my-app
|-- pom.xml
`-- src
|-- main
| `-- java
| `-- com
| `-- mycompany
| `-- app
| `-- App.java
`-- test
`-- java
`-- com
`-- mycompany
`-- app
`-- AppTest.java

创建 Maven 项目的命令如下所示:

1
2
3
4
5
mvn archetype:generate \
-DgroupId=com.mycompany.app \
-DartifactId=my-app \
-DarchetypeArtifactId=maven-archetype-quickstart \
-DinteractiveMode=false

POM

通过 Maven 命令创建项目时,会根据命令参数自动生成pom.xml文件。根据上述命令生成的pom.xml文件如下所示:

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
<project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd">
<modelVersion>4.0.0</modelVersion>

<groupId>com.mycompany.app</groupId>
<artifactId>my-app</artifactId>
<version>1.0-SNAPSHOT</version>
<packaging>jar</packaging>

<name>Maven Quick Start Archetype</name>
<url>http://maven.apache.org</url>

<dependencies>
<dependency>
<groupId>junit</groupId>
<artifactId>junit</artifactId>
<version>4.8.2</version>
<scope>test</scope>
</dependency>
</dependencies>
</project>

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 构建项目整个生命周期由多个阶段构成:

  1. validate - 检查项目和必要的信息是否正确
  2. compile - 编译
  3. test - 利用单元测试框架测试编译后的代码
  4. package - 打包,如打包成:jar
  5. integration-test - 与整个项目集成测试
  6. verify - 验证包是否可用并且达到质量标准
  7. install - 将包部署至本地库,可作为本地其它项目的依赖
  8. deploy - 将最终产品部署至远程仓库,供别的开发人员和项目使用

除了上述阶段之外,还有2个比较常用的生命周期:

  1. clean - cleans up artifacts created by prior builds
  2. site - generates site documentation for this project

每个阶段对应一个 Maven 命令,并且命令是按顺序执行的。比如执行mvn package,则命令validatecompiletest将自动被有序执行。

结束语

通过短暂的半天了解与使用之后,基本的体会是:对于小项目,可能还是直接使用JDK中自带的工具或者IDE的集成工具更为快速简单。对于大项目,特别是存在各种依赖的项目,使用 Maven 将会大大降低项目构建的复杂度。但是,目前初步有个担忧,对于超级大的项目,pom.xml的维护是不是成为一个问题?传说中,已经有一新的工具流行起来了,它叫Gradle.