Maven 入门指南
1. 什么是 Maven
Apache Maven 是一个项目构建和管理的工具,它基于项目对象模型(Project Object Model,简称 POM)的概念,通过一段描述信息来管理项目的构建、报告和文档。Maven 主要用于 Java 项目,但也可以用于其他编程语言。
2. Maven 的作用
- 方便的依赖管理
- 标准的项目构建流程
- 统一的项目结构
3. 依赖管理
3.1 Maven 坐标
Maven 中的坐标是资源(jar)的唯一标识,通过该坐标可以唯一定位资源位置。
使用坐标来定义项目或引入项目中需要的依赖。
Maven 坐标主要组成:
- Group ID(组ID):通常是组织或公司的域名倒置,例如 com.example。
- Artifact ID(工件ID):项目的名称或模块的名称。
- Version(版本号):项目的版本号,例如 1.0.0。
- snapshot 版本:表示开发中的版本,通常以 -SNAPSHOT 结尾,例如 1.0.0-SNAPSHOT。
- release 版本:表示稳定的发布版本,例如 1.0.0。
3.2 依赖配置
- 依赖:指当前项目运行所需的jar包,一个项目中可以引入多个依赖。
- 配置:
-
- 在 pom.xml 中编写
<dependencies>标签
- 在 pom.xml 中编写
-
- 在
<dependencies>标签中添加<dependency>标签引入坐标
- 在
-
- 定义坐标的
<groupId>、<artifactId>和<version>标签
- 定义坐标的
-
- 点击刷新按钮,引入最新加入的坐标
-
- 配置:
- 排除依赖:指主动断开依赖的资源,被排除的资源无需指定版本。
- 配置:
-
- 在
<dependency>标签中添加<exclusions>标签
- 在
-
- 在
<exclusions>标签中添加<exclusion>标签排除坐标
- 在
-
- 定义坐标的
<groupId>和<artifactId>标签
- 定义坐标的
-
- 配置:
3.3 示例
pom.xml:项目对象模型文件,定义了项目的基本信息、依赖关系、构建配置等。
目录结构: com.zzyl/ ├── pom.xml # 父项目的 POM 文件 └── zzyl-service/ └── pom.xml # 子模块 zzyl-service 的 POM 文件
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
<!-- 项目对象模型 POM -->
<!-- 描述当前项目 -->
<parent>
<groupId>com.zzyl</groupId> <!-- 父项目的组ID -->
<artifactId>zzyl</artifactId> <!-- 父项目的工件ID -->
<version>1.0.1</version> <!-- 父项目的版本号 -->
</parent>
<modelVersion>4.0.0</modelVersion> <!-- POM 模型版本 -->
<artifactId>zzyl-service</artifactId> <!-- 当前项目的工件ID -->
<properties>
<maven.compiler.source>11</maven.compiler.source> <!-- Java 源代码版本 -->
<maven.compiler.target>11</maven.compiler.target> <!-- Java 目标代码版本 -->
</properties>
<!-- 依赖管理模型 Dependency -->
<!-- 描述当前项目的依赖信息 -->
<dependencies>
<dependency>
<groupId>common-io</groupId> <!-- 依赖的组ID -->
<artifactId>commons-io</artifactId> <!-- 依赖的工件ID -->
<version>2.16.1</version> <!-- 依赖的版本号 -->
<!-- 排除依赖 Exclusion -->
<exclusions>
<exclusion>
<groupId>commons-logging</groupId> <!-- 排除的依赖组ID -->
<artifactId>commons-logging</artifactId> <!-- 排除的依赖工件ID -->
</exclusion>
</exclusions>
</dependency>
</dependencies>
4. 项目构建流程
4.1 生命周期
Maven 的生命周期就是为了对所有的 maven 项目构建过程进行抽象和统一。
Maven 中有3套相互独立的生命周期:
- clean: 清理生命周期,负责项目的清理工作。包括:clean 阶段。
- default: 默认生命周期,负责项目的构建工作。包括:compile、test、package、install 等阶段。
- site: 站点生命周期,负责项目站点的生成。包括:site 阶段。
每个生命周期由一系列 阶段(phase) 组成,每个阶段代表构建过程中的一个步骤。
常用的生命周期阶段包括:
- clean: 清理项目,删除之前构建生成的文件。
- compile: 编译项目的源代码。
- test: 运行测试代码。
- package: 打包编译后的代码,生成可发布的格式(如 JAR、WAR)。
- install: 将打包好的文件安装到本地仓库,以供其他项目使用。
注意:在同一套声明周期中,当运行后面的阶段时,前面的阶段会被自动执行。
例如,运行install阶段时,compile、test、package等阶段都会被依次执行。
4.2 构建命令
mvn clean:执行 clean 生命周期,清理项目。mvn compile:执行 compile 阶段,编译源代码。mvn test:执行 test 阶段,运行测试代码。mvn package:执行 package 阶段,打包项目。mvn install:执行 install 阶段,安装到本地仓库。
注意:在命令行直接运行mvn命令时,默认执行的是 default 生命周期。命令行中运行maven命令时,使用的jdk版本是环境变量JAVA_HOME指定的版本。