1. Maven 构建命令概述
Maven 是 Java 生态中最流行的构建工具之一,它提供了一套标准化的构建命令,使得开发者可以轻松管理项目的编译、测试、打包、安装和部署等任务。
本篇文章将深入解析 Maven 中最常用的构建命令,包括:
mvn clean
mvn compile
mvn test
mvn package
mvn install
mvn deploy
- 其他常见命令,如
mvn dependency:tree
、mvn help:effective-pom
等。
2. Maven 构建命令详解
2.1 mvn clean
作用:清除 target/
目录,删除之前构建的文件,确保下一次构建的干净环境。
mvn clean
执行过程:
- 删除
target/
目录 - 移除编译生成的 class 文件、打包的 JAR 文件等
适用场景:
- 在重新构建项目之前,避免旧的编译文件影响新版本。
示例:
mvn clean package
效果:
- 先清理
target/
目录,再进行打包。
2.2 mvn compile
作用:编译 src/main/java
目录下的源代码,并生成 .class
文件到 target/classes/
目录。
mvn compile
执行过程:
- 解析
pom.xml
- 下载项目依赖(如果依赖不存在)
- 编译
src/main/java
目录下的 Java 源代码 - 生成
.class
文件到target/classes/
适用场景:
- 当需要仅编译代码而不执行测试时。
示例:
mvn clean compile
效果:
- 先清理
target/
目录,然后编译代码。
2.3 mvn test
作用:编译 src/test/java
目录下的测试代码,并运行单元测试(JUnit、TestNG)。
mvn test
执行过程:
- 先执行
mvn compile
- 编译
src/test/java
目录下的测试代码 - 运行测试(JUnit 或 TestNG)
适用场景:
- 运行项目中的单元测试,确保代码逻辑正确。
示例:
mvn clean test
效果:
- 先清理
target/
目录,然后运行所有测试。
2.4 mvn package
作用:将编译后的代码打包(如 JAR、WAR)到 target/
目录。
mvn package
执行过程:
- 先执行
mvn test
- 打包
target/classes/
下的文件为 JAR 或 WAR
适用场景:
- 当需要生成可部署的 JAR/WAR 文件时。
示例:
mvn clean package
效果:
- 清理旧的
target/
目录,编译代码,运行测试,最终打包 JAR/WAR。
2.5 mvn install
作用:将打包好的 JAR/WAR 文件安装到 本地 Maven 仓库(~/.m2/repository/
),供其他项目使用。
mvn install
执行过程:
- 先执行
mvn package
- 将
target/
目录中的 JAR/WAR 文件复制到本地 Maven 仓库
适用场景:
- 当开发多个模块(Module)时,一个模块可以安装到本地仓库,以便另一个模块引用。
示例:
mvn clean install
效果:
- 清理旧的构建,编译代码,运行测试,打包,并安装到本地仓库。
2.6 mvn deploy
作用:将构建好的 JAR/WAR 部署到 远程 Maven 仓库,如 Nexus、Artifactory。
mvn deploy
执行过程:
- 先执行
mvn install
- 上传
target/
目录中的 JAR/WAR 文件到远程 Maven 仓库
适用场景:
- 当开发的库需要在团队内部共享时,可以部署到私有仓库(如 Nexus)。
示例:
mvn clean deploy
效果:
- 清理、编译、测试、打包,并上传到远程仓库。
3. 其他常用 Maven 命令
3.1 查看依赖树
作用:列出所有项目依赖,包括传递性依赖,帮助分析依赖冲突。
mvn dependency:tree
示例:
mvn dependency:tree
输出:
[INFO] com.example:my-app:jar:1.0-SNAPSHOT
[INFO] ├─ org.springframework:spring-core:jar:5.3.9:compile
[INFO] ├─ commons-logging:commons-logging:jar:1.2:compile
3.2 强制更新依赖
作用:强制更新所有依赖,确保拉取最新版本。
mvn clean install -U
3.3 显示 Maven 有效的 POM 配置
作用:查看合并后的 pom.xml
,帮助调试依赖管理。
mvn help:effective-pom
3.4 跳过测试
作用:构建时跳过单元测试,提高构建速度。
mvn clean package -DskipTests
3.5 运行单个测试
作用:只运行指定的测试类,而不是运行所有测试。
mvn test -Dtest=MyTestClass
3.6 运行 Web 项目
作用:如果使用 tomcat7-maven-plugin
,可以直接运行 Web 项目。
mvn tomcat7:run
4. Maven 常用命令总结
命令 | 作用 |
---|---|
mvn clean | 删除 target/ 目录,清理构建文件 |
mvn compile | 编译 src/main/java 目录中的代码 |
mvn test | 运行 src/test/java 目录下的测试代码 |
mvn package | 生成 JAR/WAR 文件 |
mvn install | 将 JAR/WAR 安装到本地 Maven 仓库 |
mvn deploy | 将 JAR/WAR 部署到远程仓库 |
mvn dependency:tree | 查看项目的依赖树 |
mvn clean install -U | 强制更新依赖 |
mvn help:effective-pom | 查看合并后的 POM 配置 |
mvn clean package -DskipTests | 跳过测试打包 |
mvn test -Dtest=MyTestClass | 只运行指定的测试类 |
5. 总结
- Maven 提供了一套标准的构建命令,涵盖了 清理、编译、测试、打包、安装、部署 等功能。
- 通过
mvn clean install
可以完成一次完整的构建,并安装到本地仓库。 - 通过
mvn deploy
可以将构建好的 JAR/WAR 部署到远程仓库,供团队共享。 - 通过
mvn dependency:tree
可以分析依赖关系,帮助解决依赖冲突。
熟练掌握这些命令,可以极大提高开发效率,优化构建流程!🚀