Java 依赖管理与构建流程
理解 Maven 的生命周期和依赖管理是进行高效项目构建的关键。本章将详细介绍 Java 的依赖管理与构建流程。
Maven 生命周期阶段
Maven 生命周期
Maven 有三个内置生命周期:
- clean:清理项目
- default:构建项目
- site:生成项目站点
default 生命周期阶段
default 生命周期的主要阶段(按顺序执行):
- validate:验证项目正确性
- compile:编译源代码
- test-compile:编译测试代码
- test:运行测试
- package:打包项目
- verify:验证集成测试
- install:安装到本地仓库
- deploy:部署到远程仓库
# 执行到 compile 阶段(包括 validate、compile)
mvn compile
# 执行到 test 阶段(包括前面的所有阶段)
mvn test
# 执行到 package 阶段
mvn package
# 执行到 install 阶段
mvn install
clean 生命周期阶段
clean 生命周期阶段:
- pre-clean:清理前执行
- clean:清理项目
- post-clean:清理后执行
# 执行 clean 阶段
mvn clean
# 清理并打包
mvn clean package
依赖范围(compile / test / provided)
依赖范围(scope)
依赖范围控制依赖在哪些阶段可用。
compile(默认)
**compile**是默认范围,编译和运行时都可用。
<dependency>
<groupId>org.apache.commons</groupId>
<artifactId>commons-lang3</artifactId>
<version>3.12.0</version>
<!-- scope 默认为 compile -->
</dependency>
特点:
- 编译时可用
- 运行时可用
- 打包时包含
test
**test**只在测试时可用。
<dependency>
<groupId>junit</groupId>
<artifactId>junit</artifactId>
<version>4.13.2</version>
<scope>test</scope>
</dependency>
特点:
- 编译测试代码时可用
- 运行测试时可用
- 编译主代码时不可用
- 打包时不包含
provided
**provided**由容器或 JDK 提供。
<dependency>
<groupId>javax.servlet</groupId>
<artifactId>javax.servlet-api</artifactId>
<version>4.0.1</version>
<scope>provided</scope>
</dependency>
特点:
- 编译时可用
- 运行时由容器提供
- 打包时不包含
runtime
**runtime**运行时可用,编译时不需要。
<dependency>
<groupId>mysql</groupId>
<artifactId>mysql-connector-java</artifactId>
<version>8.0.33</version>
<scope>runtime</scope>
</dependency>