Maven
Maven 是 Java 项目中常用的构建和依赖管理工具,主要用于统一管理项目依赖、编译、测试、打包、发布以及多模块项目构建。
查看版本
确认本机是否已安装 Maven,并查看 Java 运行环境信息。
写法:
mvn -v效果/说明:
Apache Maven 3.9.6
Java version: 17.0.10如果命令不可用,需要先安装 Maven,并配置 MAVEN_HOME 和 PATH。
常见目录结构
Maven 默认遵循约定优于配置的项目结构。
project
├── pom.xml
└── src
├── main
│ ├── java
│ └── resources
└── test
├── java
└── resources说明:
pom.xml:项目配置文件,声明依赖、插件、构建方式等。src/main/java:业务代码目录。src/main/resources:业务资源文件目录。src/test/java:测试代码目录。src/test/resources:测试资源文件目录。
pom.xml 基础配置
pom.xml 是 Maven 项目的核心配置文件。
写法:
<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 https://maven.apache.org/xsd/maven-4.0.0.xsd">
<modelVersion>4.0.0</modelVersion>
<groupId>com.example</groupId>
<artifactId>demo</artifactId>
<version>1.0.0</version>
<packaging>jar</packaging>
</project>效果/说明:
groupId:组织或公司标识,通常使用反向域名。artifactId:项目或模块名称。version:项目版本号。packaging:打包类型,常见值有jar、war、pom。
添加依赖
依赖统一声明在 dependencies 中。
写法:
<dependencies>
<dependency>
<groupId>org.apache.commons</groupId>
<artifactId>commons-lang3</artifactId>
<version>3.14.0</version>
</dependency>
</dependencies>效果/说明:
执行构建时,Maven 会自动从远程仓库下载依赖,并加入项目 classpath。
编译项目
编译 src/main/java 下的主代码。
写法:
mvn compile效果/说明:
编译结果默认输出到 target/classes。
运行测试
执行测试代码。
写法:
mvn test效果/说明:
Maven 会编译并运行 src/test/java 下的测试,测试报告默认生成在 target/surefire-reports。
打包项目
将项目打包成 jar 或 war。
写法:
mvn package效果/说明:
打包结果默认生成在 target 目录。
target/demo-1.0.0.jar清理构建产物
删除上一次构建生成的 target 目录。
写法:
mvn clean效果/说明:
常用于重新构建前清理旧产物。
清理并打包
常见的完整构建命令。
写法:
mvn clean package效果/说明:
先清理旧产物,再编译、测试并打包。
跳过测试
构建时跳过测试执行。
写法:
mvn clean package -DskipTests效果/说明:
会编译测试代码,但不执行测试。
如果希望连测试代码也不编译,可以使用:
mvn clean package -Dmaven.test.skip=true安装到本地仓库
将当前项目构建产物安装到本地 Maven 仓库。
写法:
mvn clean install效果/说明:
默认安装到 ~/.m2/repository,供本机其他 Maven 项目引用。
查看依赖树
排查依赖来源、版本冲突和传递依赖。
写法:
mvn dependency:tree效果/说明:
com.example:demo:jar:1.0.0
\- org.apache.commons:commons-lang3:jar:3.14.0:compile指定 Profile
Profile 常用于区分开发、测试、生产等不同环境配置。
pom.xml 写法:
<profiles>
<profile>
<id>dev</id>
<properties>
<env>dev</env>
</properties>
</profile>
</profiles>命令写法:
mvn clean package -Pdev效果/说明:
-Pdev 表示启用 id 为 dev 的 Profile。
多模块项目
父工程通常使用 pom 打包,并通过 modules 管理子模块。
写法:
<packaging>pom</packaging>
<modules>
<module>common</module>
<module>service</module>
<module>web</module>
</modules>效果/说明:
在父工程目录执行 Maven 命令时,会按模块依赖关系构建所有子模块。
常用命令速查
| 命令 | 说明 |
|---|---|
mvn -v | 查看 Maven 版本 |
mvn compile | 编译主代码 |
mvn test | 运行测试 |
mvn package | 打包项目 |
mvn clean | 清理构建产物 |
mvn clean package | 清理并打包 |
mvn clean install | 安装到本地仓库 |
mvn dependency:tree | 查看依赖树 |
mvn clean package -DskipTests | 跳过测试执行并打包 |
mvn clean package -Pdev | 使用指定 Profile 构建 |
